我有以下数据框:
sp <- combn(c("sp1","sp2","sp3","sp4"),2)
d <- data.frame(t(sp),"freq"=sample(0:100,6))
和两个因素
x1 <- as.factor(c("sp1","sp2"))
x2 <- as.factor(c("sp3","sp4"))
我需要返回一个数据框,其中包含x1
和x2
的所有可能组合以及与此组合相关联的数据框freq
中的d
。
返回的数据框如下所示:
data.frame("X1" = c("sp1","sp1","sp2","sp2"),
"X2" = c("sp3","sp4","sp3","sp4"),
"freq" = c(4,94,46,74))
我试过了:
sub <- d[d$X1 == x1 & d$X2 == x2,]
但得到错误
Error in Ops.factor(d$X1, x1) : level sets of factors are different
关于如何解决这个问题的任何想法?
答案 0 :(得分:5)
你快到了:
d[d$X1 %in% x1 & d$X2 %in% x2,]
答案 1 :(得分:3)
不要提出x1
和x2
因素。只需使用矢量。使用%in%
进行逻辑测试。
sp <- combn(c("sp1","sp2","sp3","sp4"),2)
d <- data.frame(t(sp),"freq"=sample(0:100,6))
x1 <- c("sp1","sp2")
x2 <- c("sp3","sp4")
sub <- d[d$X1 %in% x1 & d$X2 %in% x2,]