2015-01-08 55 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