子集基于来自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
答案 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,]