【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
本文来自博客园,作者:生物信息与育种,转载请注明原文链接:https://www.cnblogs.com/miyuanbiotech/p/14658376.html。若要及时了解动态信息,请关注同名微信公众号:生物信息与育种。

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号