需求

一个数据框一列或多列中有重复行,如何将它的重复行转化为多列?即本来两列一对一的关系,如何转化为一对多的关系?普通的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

最新文章

  1. J a v a 的“多重继承”
  2. JavaScript - BOM
  3. loopback 02
  4. macbook air 安装win7双系统
  5. 利用 Composer 一步一步构建自己的 PHP 框架(二)——构建路由
  6. 知乎上关于c和c++的一场讨论_看看高手们的想法
  7. EassyUI内置方法与属性
  8. DOM元素对象的属性和方法(1)
  9. c++自带倒置数组函数
  10. 使用Struts2实现文件的上传和下载
  11. Thread.Sleep(0) vs Sleep(1) vs Thread.Yeild()
  12. css选择器+、~、>
  13. 用java代码作日历
  14. 7.2 GRASP原则二:信息专家 Information Expert
  15. Java高级特性 第2节 java中常用的实用类(1)
  16. Hbase 性能改进
  17. 关于super的理解,三篇文章支撑起来的
  18. hdu5992 kdt
  19. UI5-学习篇-4-SCP-SAP WEB IDE登录
  20. CSDN博客的积分计算方法和博客排名规律

热门文章

  1. UltraSoft - Beta - 项目展示
  2. 替换excel模板中的内容并使用JavaMail发送邮件
  3. git常用的一些简单命令
  4. Noip模拟14 2021.7.13
  5. Linux基础是零基础必须要过的关,你懂了多少
  6. longest-consecutive-sequence leetcode C++
  7. vue三级路由显示+面包屑
  8. Linux 文本三剑客之 awk
  9. loto仪器_如何模拟输出凸轮轴和曲轴波形_用任意波形信号源SIG852?
  10. Red Hat Enterprise Linux (RHEL) 9 更新了什么,即 Rocky Linux 9 和 AlmaLinux 9 展望