我有以下形式的交易数据的数据框
transactions <- data.frame(transaction=c("T1","T2","T2","T3","T3","T3"),sku=c("item_a","item_b","item_c","item_a","item_b","item_d"))
这给了我
transaction sku
1 T1 item_a
2 T2 item_b
3 T2 item_c
4 T3 item_a
5 T3 item_b
6 T3 item_d
我想要得到的输出是此数据帧:
output <- data.frame(transaction=c("T1","T2","T3"),sku=c("item_a","item_b item_c","item_a item_b item_d"))
看起来像这样
transaction sku
1 T1 item_a
2 T2 item_b item_c
3 T3 item_a item_b item_d
我尝试了各种方法,例如首先通过transactions $ transaction在原始数据帧上使用 split ,但是后来我很难从结果列表中提取sku数据。朝正确方向的任何指针将不胜感激。
编辑:固定输出数据框中的错字。感谢juba。
最佳答案
使用plyr
和summarise
require(plyr)
ddply(transactions, .(transaction), summarise, sku=paste(sku, collapse = " "))
# transaction sku
# 1 T1 item_a
# 2 T2 item_b item_c
# 3 T3 item_a item_b item_d
关于r - 转换R数据框中的列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14864907/