我想獲取數據框的唯一行,然後將其與另一行屬性進行連接。然後,我希望能夠計算品種的數量,例如特定類型或來源的獨特水果的數量。在R中合併數據幀的優雅方式?
的第一個數據幀有我水果的清單:
fruits <- read.table(header=TRUE, text="shop fruit
1 apple
2 orange
3 apple
4 pear
2 banana
1 banana
1 orange
3 banana")
第二個數據幀有我的屬性:
fruit_class <- read.table(header=TRUE, text="fruit type origin
apple pome asia
banana berry asia
orange citrus asia
pear pome newguinea")
這裏是我的笨拙的解決問題的辦法:
fruit <- as.data.frame(unique(fruit[,2])) #get a list of unique fruits
colnames(fruit)[1] <- "fruit" #this won't rename the column and I don't know why...
fruit_summary <- join(fruits, fruit_class, by="fruit" #create a data frame that I can query
count(fruit_summary, "origin") #for eg, summarise the number of fruits of each origin
所以我的主要問題是:這怎麼可以更優雅地表達(即一條線而不是3條)?其次:爲什麼它不允許我重命名列?
在此先感謝
在鹼:'集合體(水果〜原點,合併(水果,fruit_class),FUN =長度)'或dplyr:'水果%>%left_join(fruit_class)%>%計數(原點)' – alistaire
你基本代碼告訴我,亞洲有12種水果,新幾內亞有4種水果,所以它總結了水果$商店專欄(我不想使用)。結果應該是來自亞洲的3個水果(蘋果,香蕉和桔子)和一個來自新幾內亞(梨)。 – setbackademic
我得到7和1,但如果你只是想從'fruit_class'數出來,使用'count(fruit_class,origin)'。如果你想確保它們在'fruits'中,那麼使用'fruit_class%>%semi_join(fruits)%>%count(origin)',在這種情況下它會返回相同的結果。也不是總結「商店」;他們正在計數行。 – alistaire