在R中子集行

比坦舒达斯

我有以下格式的庞大数据集:

 ID       Interaction         Interaction_number
  1         abc                    1
  1         xyz                    2
  1         pqr                    3
  1         ced                    0
  2         ab                     0
  2         efg                    1
  3         asdf                   2
  3         fgh                    3
  3         abc                    0
  4         sql                    1
  4         ghj                    2
  5         poi                    2
  6         pqr                    1

现在,我想提取所有ID为0的ID数据,例如:

 ID       Interaction         Interaction_number
  1         abc                    1
  1         xyz                    2
  1         pqr                    3
  1         ced                    0
  2         ab                     0
  2         efg                    1
  3         asdf                   2
  3         fgh                    3
  3         abc                    0

它是一个巨大的数据集。我需要使用R提取它。

我尝试使用sqldf函数。

x<-sqldf("select * from data where data$ID in (select data$ID from data where data$Interaction_number ==0)")

但是该功能没有起作用。我当时想添加一个标记列(对于所有ID为0的所有ID,均添加1列),然后对这些行进行子集化。但是我不知道该怎么做。我们可以创建ID的数据帧,然后使用该数据帧来使用子集获取所有行吗?

请帮忙。谢谢你

danas.zuokas

我建议使用data.table包。然后,您可以获得您的结果。说您的数据在data.frame df然后

library(data.table)
dt <- data.table(df, key = 'ID')
tmp <- dt[, list(condition = any(Interaction_number == 0)), by = ID]
res <- dt[tmp[condition == TRUE, list(ID)]]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章