2012-06-19 20 views
4

過濾的數據幀由因子I具有以下數據幀:中的R

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")) 

我需要一個數據幀返回的含有x1x2freq所有可能的組合來自與此組合相關聯的數據幀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 

如何解決這個問題的任何想法?

回答

3

不要x1x2因素。只需使用矢量。邏輯測試使用%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,] 
+0

@julius,哎!太慢了。 – John

+0

工作過的魅力@John和@Julius! – Elizabeth

5

你幾乎有:

d[d$X1 %in% x1 & d$X2 %in% x2,] 
+0

這工作得很好!謝謝! – Elizabeth