因素

2016-07-24 33 views
-1

我具有各種dataframes像:因素

Var1 "Bananas" "Apples" "Oranges" 
Freq "2"  "2"  "1"    


Var2 "Bananas" "Carrots" "Strawberries" "Apples" 
Freq "3"  "2"  "3"   "4"    

和作爲輸出我想一個數據幀/表/相似給每個輸入數據幀的出現,包括0出現在東西很好的概述。所以像這樣:

Var  "Bananas" "Apples" "Oranges" "Carrots" "Strawberries" 
Sample1 "2"  "2"  "1"  "0"   "0" 
Sample2 "3"  "4"  "0"  "2"   "3" 

我不能完全弄清楚任何解決方案,尤其是因爲data.frames不允許不同的長度。

+0

你看過'merge'嗎? – dayne

+1

那些看起來不像數據框。一個可重現的例子會膨脹。 –

回答

1

注意到,NA0意味着完全不同的東西。看看幫助文件?dplyr::join

library(dplyr) 
df1 <- data.frame(Var1 =c("Bananas", "Apples", "Oranges"), 
      Freq =c(2,2,1)) 
df2 <- data.frame(Var1 =c("Bananas", "Carrots", 
          "Strawberries", "Apples"), 
        Freq =c(3,2,3,4)) 
full_join(df1,df2, by = "Var1") 
+0

它包含在我的原始答案中以查看?dplyr :: join,但我編輯了函數調用來指定庫,但我想我可以更清楚。 – shayaa

+0

'::'加載庫,但我明白你的意思。初學者可能更容易接觸到這個問題。 – shayaa

+0

謝謝。這解決了它的兩個數據幀。 有沒有可能的擴展到多個? – heffalump

0

你應該?merge看一看:

set.seed(1234) 
dat1 <- data.frame(var1 = LETTERS[1:5], freq = sample(1:100, 5)) 
dat2 <- data.frame(var2 = LETTERS[3:7], freq = sample(1:100, 5)) 

res <- merge(dat1, dat2, by.x = "var1", by.y = "var2", all = TRUE) 
res[is.na(res)] <- 0 
res 
# var1 freq.x freq.y 
# 1 A  12  0 
# 2 B  62  0 
# 3 C  60  65 
# 4 D  61  1 
# 5 E  83  23 
# 6 F  0 100 
# 7 G  0  50 
+0

如果合併之前數據中有「NA」,該怎麼辦?你只是把它們改成了'0'。 –

+0

@RichardScriven公平點 - 我真的只是想說明'合併'可能如何幫助OP。如果OP澄清他們的問題,我會刪除或更新答案。 – dayne