R通过2个因子的特定级别组合进行子集化

时间:2014-02-27 10:30:04

标签: r subset

子集基于来自2个因素的独特水平组合:

test <- data.frame(colA = rep(1:3,each =4), colB = LETTERS[c(1,2,3,4,5,6,1,2,5,6,7,4)] )
# select for each colA factor specfic letters: 1&A 1&B  2&E  3&D
test[test$colA %in% c(1,1,2,3) & test$colB %in% c("A", "B", "E", "D"),]

这不是我想要的:

colA colB
1     1    A
2     1    B
4     1    D
5     2    E
7     2    A
8     2    B
9     3    E
12    3    D

我想:

colA colB
1 A
1 B
2 E
3 D

1 个答案:

答案 0 :(得分:2)

尝试一下:

> test[interaction(test,sep='') %in% c('1A','1B','2E','3D'),]
   colA colB
1     1    A
2     1    B
5     2    E
12    3    D

我认为您的实际情况可能更复杂,在这种情况下,您可能希望以编程方式构建可接受的组合,例如:

x <- paste(c(1,1,2,3), c('A','B','E','D'), sep='')
test[interaction(test,sep='') %in% x,]