使用ifelse从R中的数据集中删除不需要的行

时间:2012-09-17 12:28:33

标签: r subset if-statement

我有一个数据集,我想在几个人的第一个观察年中删除第11个月的出现。有可能用ifelse做到这一点吗?类似的东西:

ifelse(ID=="1" & Month=="11" and Year=="2006", "remove these rows",  
  ifelse(ID=="2" & Month=="11" & Year=="2007", "remove these rows",   
         "nothing"))  

一如既往,所有帮助表示赞赏! :)

1 个答案:

答案 0 :(得分:2)

一个data.table解决方案,它将节省时间和内存(并且略微减少编码)。它可以很好地扩展 big 数据集。

如果列是整数,而不是因子

library(data.table)
DT <- data.table(ID = rep(1:2, each = 72),
          Year = rep(2006:2008, each = 24),
          Month = rep(1:12, times = 3))
# or you could use:   DT <- as.data.table(dat)
setkey(DT,ID,Year,Month)
DT[-DT[J(1:2,2006:2007,11),which=TRUE]]