這個問題可能聽起來與其他問題類似,但我希望它有所不同。 我想採取一個具體的值列表,並計算它們在另一個值列表中出現的頻率,其中不出現的值被重新調整爲0。獲取另一個數據框中特定值的計數
我有一個數據幀(DF1)具有以下值:包含一個名爲 '東西' 列
Items <- c('Carrots','Plums','Pineapple','Turkey')
df1<-data.frame(Items)
>df1
Items
1 Carrots
2 Plums
3 Pineapple
4 Turkey
和第二數據幀(DF2):
> head(df2,n=10)
ID Date Thing
1 58150 2012-09-12 Potatoes
2 12357 2012-09-28 Turnips
3 50788 2012-10-04 Oranges
4 66038 2012-10-11 Potatoes
5 18119 2012-10-11 Oranges
6 48349 2012-10-14 Carrots
7 23328 2012-10-16 Peppers
8 66038 2012-10-26 Pineapple
9 32717 2012-10-28 Turnips
10 11345 2012-11-08 Oranges
我知道「土耳其」一詞只出現在df1而不是df2中。我想返回頻率表或df1中出現在df2中的項目的計數,並返回土耳其計數的「0」。
如何使用來自另一個值的數據框列來總結值?我得到的最接近是:
df2%>% count (Thing) %>% filter(Thing %in% df1$Items,)
但這回DF1和DF2之間的過濾項的列表,以便「土耳其」被排除在外。很近!
> df2%>% count (Thing) %>% filter(Thing %in% df1$Items,)
# A tibble: 3 x 2
Thing n
<fctr> <int>
1 Carrots 30
2 Pineapple 30
3 Plums 38
我希望我的輸出看起來像這樣:
1 Carrots 30
2 Pineapple 30
3 Plums 38
4 Turkey 0
我新望到R和完全新的dplyr。
感謝斯蒂芬,我收到了長度警告:'較長對象長度不短對象length' – gzrcm
啊,我想我知道爲什麼的倍數。 所以上面的代碼查看每個項目,而不僅僅是唯一的項目。我已經更新了我的評論。 –
我仍然收到同樣的錯誤,但是我看到了你的腳本試圖達到的目標。我創建的df1來自一個向量。有沒有什麼辦法可以簡化使用原始矢量的for循環? – gzrcm