2015-01-08 58 views
1

我給用的編碼和與R中的第一步驟和我有一個問題:R濾光器的數據幀

我有這種格式的一個數據幀:

Months| Person 

April Person1 

May Person2 

April Person1 

June Person 3 

May Person4 

,我想這樣的輸出:

May - Person2, Person4 

April - Person1 

June - Person3 

我使用unique(df$months)和我得到的唯一個月,但我不能得到的人。

我在想保存每個unique(df$months)的索引,並選擇這些索引的「人物」...每個unique(df$months)。但這似乎並不是「最佳」或好的做法。

任何人都可以幫到我嗎?

回答

3

你可以刪除「重複」的行(unique(df))後使用aggregate(從base R)和使用(toString)到paste一起獨特的「人」的「月」進行分組。 toStringpaste(., collapse=', ')

aggregate(.~Months, unique(df), toString) 
# Months   Person 
#1 April   Person1 
#2 June   Person3 
#3 May Person2, Person4 

或者相同的包裝可以data.table做首先轉換爲「data.table」(setDT),刪除重複等等

library(data.table) 
unique(setDT(df))[,list(Person=toString(Person)) , Months] 
+0

感謝它的工作原理。 ..和更容易....感謝:D – RookieSun

+0

'聚合(人〜月,df,toString)'也工作?在這種情況下,「獨特」似乎是一種開銷。這似乎也被問了這麼多次,仍然無法找到一個好的愚蠢.. –

+0

@DavidArenburg我早些時候嘗試過,但它會有'四月Person1,Person1' – akrun