r - 消除数据表中选定的行

标签 r data.table

我试图根据两列的值删除数据表中的一行,但没有成功。

我尝试了在其他线程中找到的两个代码:

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/

相关文章:

正则表达式替换 R 中字符串的部分/组

r - 从 R Forge 安装包时出现安装错误

r - R中的tapply和aggregate有什么区别?

r - 如何使用向量作为列引用粘贴到 data.table 中?

r - 生成给定年份的随机日期

r - 如何将 data.table 与循环结合起来

r - 我如何在 R 中的一个地方找到所有美国人口普查区?

r - 是否可以从 vcd 包中编辑马赛克图的轴标签?

R data.table 计算组中每个成员的子集向量的函数

r - 如何选择一行,然后转置它,然后将它与 R 中的其余部分堆叠在一起?