我试图根据两列的值删除数据表中的一行,但没有成功。
我尝试了在其他线程中找到的两个代码:
my.data.table[!(my.data.table[,1]==6557 & my.data.table[,2]=="31-Dec-82"),]
###var1 is in column 1 and var2 is in column 2
my.data.table %>% filter(var1!= 6557 & var2!="31-Dec-82")
但没有一个有效。请注意var1
是数字且 var2
是字符(目前不是日期)。
我唯一可以工作的方法是手动查找行号
my.data.table<-my.data.table[-rownumber]
但这在 1M 行表中并不是很方便,即使已排序。
知道为什么我不能让它工作吗?
最佳答案
因为它是一个data.table
,
my.data.table[,1]
不会像 data.frame
中那样对列进行子集化。可以使用 [[
向量
my.data.table[[1]]
即
my.data.table[!(my.data.table[[1]]==6557 & my.data.table[[2]] =="31-Dec-82"),]
或者指定列的名称
my.data.table[!(var1==6557 & var2 =="31-Dec-82")]
对 data.table 列进行子集化的另一个选项是指定 with = FALSE
my.data.table[, 1, with = FALSE]
但这将返回单列data.table
而不是向量
关于r - 消除数据表中选定的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50034134/