2015-06-02 27 views

回答

2

我们可以按'col1'和paste分组''col2'与collapse=','选项。一个方便的包装将是toString。这可以通过任何聚合组功能来完成。例如,对于data.table,我们将 'data.frame' 到 'data.table'(setDT(df1)),并使用逻辑从base R

aggregate(col2~col1, df1, FUN=toString) 
上述

library(data.table) 
setDT(df1)[, list(col2 = toString(col2)), by = col1] 

或用aggregate描述

如果您需要list'col2'输出

aggregate(col2~col1, df1, FUN=I) 

或者使用dplyr

library(dplyr) 
df1 %>% 
    group_by(col1) %>% 
    summarise(col2= toString(col2)) 
+0

弓掌握但是这是快速和高效利用内存 – The6thSense

+1

@VigneshKalai感谢您的意见。对于大数据集,“聚合”会很慢。我认为'dplyr'和'data.table'的表现相似,尽管我给'data.table'一些优势(虽然没有进行基准测试) – akrun

+2

@VigneshKalai,不要去冒犯,而是问问哪种方法会很快,对不同问题的记忆效率,您可以尝试自行探索。请查看'microbenchmark'软件包,并阅读http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example以了解如何生成模拟数据集。然后用这些模拟数据集运行基准来得出你自己的结论。这样做也可以帮助您更好地理解R和常用软件包。 – A5C1D2H2I1M1N2O1R2T1

相关问题