我有以下形式的交易数据的数据框

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。

最佳答案

使用plyrsummarise

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/

10-12 21:58
查看更多