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
我有一个原始数据的数据框:
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