subset.data.frame 在 R 中

subset.data.frame in R

我有一个原始数据的数据框:

raw <- data.frame(subj = c(1,1,1,2,2,2,3,3,3,4,4,4),
                   blah = c(0,0,0,1,1,1,1,0,1,0,0,0))

我想从中删除错误的主题。

badsubj <- c(1,4)  
trim <- subset.data.frame(raw, subj != badsubj)  

但是由于某些原因,所有的 badsubj 值都没有被删除:

   subj blah
2     1    0
4     2    1
5     2    1
6     2    1
7     3    1
8     3    0
9     3    1
11    4    0

我做错了什么? Obersvations 2 和 11 应该被排除在外,因为它们是 badsubj 的成员。

raw[!raw$subj %in% badsubj, ] 

错误使用!=

问题是subj和badsubj的长度不一样。因此 badsubj 将被回收,直到两个向量具有相同的长度。然后您的代码逐元素比较下面输出中的值。

     subj badsubj
 1     1    1
 2     1    4
 3     1    1
 4     2    4
 5     2    1
 6     2    4
 7     3    1
 8     3    4
 9     3    1
 10    4    4
 11    4    1
 12    4    4