【R】如何将重复行转化为多列(一对一转化一对多)?
2024-09-05 20:59:42
需求
一个数据框一列或多列中有重复行,如何将它的重复行转化为多列?即本来两列一对一的关系,如何转化为一对多的关系?普通的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
最新文章
- J a v a 的“多重继承”
- JavaScript - BOM
- loopback 02
- macbook air 安装win7双系统
- 利用 Composer 一步一步构建自己的 PHP 框架(二)——构建路由
- 知乎上关于c和c++的一场讨论_看看高手们的想法
- EassyUI内置方法与属性
- DOM元素对象的属性和方法(1)
- c++自带倒置数组函数
- 使用Struts2实现文件的上传和下载
- Thread.Sleep(0) vs Sleep(1) vs Thread.Yeild()
- css选择器+、~、>;
- 用java代码作日历
- 7.2 GRASP原则二:信息专家 Information Expert
- Java高级特性 第2节 java中常用的实用类(1)
- Hbase 性能改进
- 关于super的理解,三篇文章支撑起来的
- hdu5992 kdt
- UI5-学习篇-4-SCP-SAP WEB IDE登录
- CSDN博客的积分计算方法和博客排名规律
热门文章
- UltraSoft - Beta - 项目展示
- 替换excel模板中的内容并使用JavaMail发送邮件
- git常用的一些简单命令
- Noip模拟14 2021.7.13
- Linux基础是零基础必须要过的关,你懂了多少
- longest-consecutive-sequence leetcode C++
- vue三级路由显示+面包屑
- Linux 文本三剑客之 awk
- loto仪器_如何模拟输出凸轮轴和曲轴波形_用任意波形信号源SIG852?
- Red Hat Enterprise Linux (RHEL) 9 更新了什么,即 Rocky Linux 9 和 AlmaLinux 9 展望