0
点赞
收藏
分享

微信扫一扫

【R】如何将重复行转化为多列(一对一转化一对多)?

目录

  • ​​需求​​
  • ​​方法一​​
  • ​​方法二​​

需求

一个数据框一列或多列中有重复行,如何将它的重复行转化为多列?即本来两列一对一的关系,如何转化为一对多的关系?普通的spread函数实现较为麻烦。

示例数据如下:

Item    Value
Apricot 4
Apricot 2
Apricot 5
Banana  4
Carrot  7
Carrot  5

想要实现的效果:

Item    Value 1     Value 2     Value 3
Apricot     4           2           5
Banana      4       
Carrot      7           5 

方法一

使用data.table。

library(data.table)
dcast(setDT(df1), Item~rowid(Item, prefix="Value"), value.var="Value")
#      Item Value1 Value2 Value3
#1: Apricot      4      2      5
#2:  Banana      4     NA     NA
#3:  Carrot      7      5     NA

方法二

dplyr和tidyr需要先用mutate增加一列,再用spread。

library(dplyr)
library(tidyr)
your.data %>%
  group_by(Item) %>%
  mutate(Order = seq_along(Item)) %>%
  spread(key = Order, value = Value)


​​https://stackoverflow.com/questions/37433915/converting-multiple-duplicate-rows-into-columns-r​​



作者:Bioinfarmer

 若要及时了解动态信息,请关注同名微信公众号:Bioinfarmer。

举报

相关推荐

0 条评论