如何删除R中的数据框的第一行?
我有一个数据集与11列,每个1000行以上。 这些列被标记为V1,V2,V11等。我使用“c”命令replace了对我更有用的名称。 我没有意识到第1行也包含每列的标签,我的实际数据从第2行开始。
有没有办法删除第1行和递减?
保持您的原始文件的标签是这样的:
df = read.table('data.txt', header = T)
如果您有名为x和y的列,可以像这样解决它们:
df$x df$y
如果你想要从data.frame中删除第一行,你可以使用如下所示的负数索引:
df = df[-1,]
如果你想从data.frame中删除一列,你可以给它分配NULL:
df$x = NULL
以下是如何在R中创build和操作data.frame的简单示例:
# create a data.frame with 10 rows > x = rnorm(10) > y = runif(10) > df = data.frame( x, y ) # write it to a file > write.table( df, 'test.txt', row.names = F, quote = F ) # read a data.frame from a file: > read.table( df, 'test.txt', header = T ) > df$x [1] -0.95343778 -0.63098637 -1.30646529 1.38906143 0.51703237 -0.02246754 [7] 0.20583548 0.21530721 0.69087460 2.30610998 > df$y [1] 0.66658148 0.15355851 0.60098886 0.14284576 0.20408723 0.58271061 [7] 0.05170994 0.83627336 0.76713317 0.95052671 > df$x = x > df yx 1 0.66658148 -0.95343778 2 0.15355851 -0.63098637 3 0.60098886 -1.30646529 4 0.14284576 1.38906143 5 0.20408723 0.51703237 6 0.58271061 -0.02246754 7 0.05170994 0.20583548 8 0.83627336 0.21530721 9 0.76713317 0.69087460 10 0.95052671 2.30610998 > df[-1,] yx 2 0.15355851 -0.63098637 3 0.60098886 -1.30646529 4 0.14284576 1.38906143 5 0.20408723 0.51703237 6 0.58271061 -0.02246754 7 0.05170994 0.20583548 8 0.83627336 0.21530721 9 0.76713317 0.69087460 10 0.95052671 2.30610998 > df$x = NULL > df y 1 0.66658148 2 0.15355851 3 0.60098886 4 0.14284576 5 0.20408723 6 0.58271061 7 0.05170994 8 0.83627336 9 0.76713317 10 0.95052671
您可以使用负面索引删除行,例如:
dat <- dat[-1, ]
这里是一个例子:
> dat <- data.frame(A = 1:3, B = 1:3) > dat[-1, ] AB 2 2 2 3 3 3 > dat2 <- dat[-1, ] > dat2 AB 2 2 2 3 3 3
也就是说,您可能会遇到更多的问题,而不仅仅是删除第1行结束的标签.R更可能将数据解释为文本,并将其转换为因子。 检查什么str(foo)
,其中foo
是你的数据对象,说数据types。
这听起来像你只需要调用header = TRUE
来读取数据(假设你通过read.table()
或其中的一个包装器读取它read.table()
。
没有人可能真的想要删除第一行。 所以如果你正在寻找一些有意义的东西,那就是有条件的select
#remove rows that have long length and "0" value for vector E >> setNew<-set[!(set$length=="long" & set$E==0),]
dat <- dat[-1, ]
工作,但它杀了我的dataframe,改变成另一种types。 不得不使用dat <- data.frame(dat[-1, ])
但这可能是一个特例,因为这个数据框最初只有一列。
我不是专家,但是这也可以起作用,
dat <- dat[2:nrow(dat), ]