R 子集由 2 个因子的特定水平组合组成

  • 本文关键字:水平 组合 子集 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

试一试:

> 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,]

最新更新