无法删除data.table中的列

时间:2014-07-28 16:29:33

标签: r data.table

我有一个带有2个级别的data.frame(df2):主题和时间以及5个变量。 因为我想将它与另一个具有完全相同结构的数据帧(df1)合并,相同的年份(但在原始数据帧中,id和时间是整数)

通常你只需用

删除前两行
a<-df2[,-c(1,2)] 

df1<-cbind(df1,a)

但因为它们是因子级别R不知何故不允许我删除它们。我试图将它们设置为a.numeric,但那也没有用。我错过了什么?

这是我的df2的结构:

> str(data)
Classes ‘data.table’ and 'data.frame':  2262 obs. of  9 variables:
 $ id          : Factor w/ 87 levels "1","2","3","4",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ time        : Factor w/ 26 levels "1987","1988",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ shares      : num  NA 0.016 0.016 0.016 0.016 0.016 0.016 0.16 0.16 0.159 ...
 $ tacc        : num  NA 38.7 31 50.5 28.7 ...

我想删除整个列ID和时间

1 个答案:

答案 0 :(得分:3)

问题似乎是您实际上尝试在data.frame上使用data.table语法。

以下是一个例子:

library(data.table)
DT <- data.table(id = 1:2, time = 3:4, shares = 5:6, tacc = 7:8)
DT[, -c(1, 2)]
# [1] -1 -2
DT[, -c(1, 2), with = FALSE]
#    shares tacc
# 1:      5    7
# 2:      6    8

DF <- as.data.frame(DT)
DF[, -c(1, 2)]
#   shares tacc
# 1      5    7
# 2      6    8

请注意,使用这样的索引位置并非最佳做法,只是因为从长远来看,这会使代码更加模糊。