0
我想通过组变量在矩阵行中找到缺失观察值的独特组合。R:按组分组的独特矩阵行
我可以通过使用显示的子集,cbind和rbind命令的序列来设置示例数据,以生成矩阵u3。
但是,我怀疑有一个更好的方法,不会涉及“手动”为组变量的每个级别的矩阵子集。我曾尝试在底部使用tapply命令,但无法使其工作。
非常感谢您的任何建议。
my.data <- matrix(c(
1, 0, 1, 1, 1,
NA, 1, 1, 0, 1,
NA, 0, 0, 0, 1,
NA, 1,NA, 1, 1,
NA, 1, 1, 1, 1,
0, 0, 1, 0, 1,
NA, 0, 0, 0, 1,
0,NA,NA,NA, 1,
1,NA,NA,NA, 1,
1, 1, 1, 1, 1,
NA, 1, 1, 0, 1,
1, 0, 1, 1, 2,
1, 1, NA, 0, 2,
NA, NA, NA, 0, 2,
NA, NA,NA, 1, 2,
1, 1, 1, NA, 2,
0, 0, 1, 0, 2,
NA, 0, 0, 0, 2,
0,NA,NA,NA, 2,
1,NA,NA,NA, 2,
1, 1, 1, 1, 2,
0, 1, 1, NA, 2
),
nrow=22, byrow=T,
dimnames = list(NULL, c("c1","c2","c3","c4","my.group")))
my.data <- as.data.frame(my.data)
my.data
g1 <- subset(my.data, my.data$my.group==1)
u1 <- unique(is.na(g1[1:4]))
u1 <- cbind(1,u1)
g2 <- subset(my.data, my.data$my.group==2)
u2 <- unique(is.na(g2[1:4]))
u2 <- cbind(2,u2)
u3 <- rbind(u1,u2)
u3
tapply(my.data[,1:4], my.data$my.group, function(x) {unique(is.na(x), 'rows') })
这里是矩阵U3:
c1 c2 c3 c4
1 1 0 0 0 0
2 1 1 0 0 0
4 1 1 0 1 0
8 1 0 1 1 1
12 2 0 0 0 0
13 2 0 0 1 0
14 2 1 1 1 0
16 2 0 0 0 1
18 2 1 0 0 0
19 2 0 1 1 1