热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在R中将多列转换为单行-ConvertMultipleColumnstoSingleRowinR

拥有一个包含1000个ID及其对应值的数据框时,如何有效地将两个列基于ID转换为单行?本文提供了一种利用dplyr和tidyr包实现这一目标的方法。

我目前处理的是一个包含1000个唯一ID及其相关数值的数据框。我的目标是根据每个ID将特定的两列合并成一行。虽然尝试过使用reshape包中的cast函数,但它仅能将单一列转换为行。下面是一个具体的数据示例:


DF <- data.frame(ID=c("x1","x1","x1","x1","x2","x2","x2","x2"),
name1=c("T1","T1","T2","T2","T1","T1","T2","T2"),
name2=c("C1","C2","C1","C2","C1","C2","C1","C2"),
T1_val=c(1.1,1.1,2.3,2.3,1.8,1.8,7.9,7.9),
C1_val=c(1.1,2.6,1.1,2.6,1.8,3.6,1.8,3.6))

> DF
ID name1 name2 T1_val C1_val
1 x1 T1 C1 1.1 1.1
2 x1 T1 C2 1.1 2.6
3 x1 T2 C1 2.3 1.1
4 x1 T2 C2 2.3 2.6
5 x2 T1 C1 1.8 1.8
6 x2 T1 C2 1.8 3.6
7 x2 T2 C1 7.9 1.8
8 x2 T2 C2 7.9 3.6

期望得到的结果如下所示:


ID  T1   T2   C1   C2
x1 1.1 2.3 1.1 2.6
x2 1.8 7.9 1.8 3.6

感谢您的帮助!


解决方案


通过结合使用dplyr和tidyr这两个强大的数据操作包,可以非常简便地达到上述目的。以下是具体的代码实现:


library(dplyr)
library(tidyr)

DF %>%
pivot_wider(names_from = c(name1, name2), values_from = c(T1_val, C1_val))

运行以上代码后,将会得到如下结果:


# A tibble: 2 × 5
ID T1_T1 C1_C1 T2_T2 C2_C2

1 x1 1.1 1.1 2.3 2.6
2 x2 1.8 1.8 7.9 3.6

如果您希望深入学习这两个包的更多功能,建议查阅官方文档或相关的快速参考指南。


推荐阅读
  • Jupyter Notebook多语言环境搭建指南
    本文详细介绍了如何在Linux环境下为Jupyter Notebook配置Python、Python3、R及Go四种编程语言的环境,包括必要的软件安装和配置步骤。 ... [详细]
  • 本文详细介绍了如何利用 Bootstrap Table 实现数据展示与操作,包括数据加载、表格配置及前后端交互等关键步骤。 ... [详细]
  • 本文介绍如何使用JavaScript中的for循环来创建一个九九乘法表,适合初学者学习循环结构的应用。 ... [详细]
  • 在将 Android Studio 从 3.0 升级到 3.1 版本后,遇到项目无法正常编译的问题,具体错误信息为:org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:processDemoProductDebugResources'。 ... [详细]
  • 在Qt框架中,信号与槽机制是一种独特的组件间通信方式。本文探讨了这一机制相较于传统的C风格回调函数所具有的优势,并分析了其潜在的不足之处。 ... [详细]
  • 本文详细介绍了如何在 Node.js 环境中利用 Nodemailer 库实现邮件发送功能,包括环境配置、代码实现及常见问题解决方法。 ... [详细]
  • SQL Server 存储过程实践任务(第二部分)
    本文档详细介绍了三个SQL Server存储过程的创建与使用方法,包括统计特定类型客房的入住人数、根据房间号查询客房详情以及删除特定类型的客房记录。 ... [详细]
  • 本文介绍了实时流协议(RTSP)的基本概念、组成部分及其与RTCP的交互过程,详细解析了客户端请求格式、服务器响应格式、常用方法分类及协议流程,并提供了SDP格式的深入解析。 ... [详细]
  • 如题:2017年10月分析:还记得在没有智能手机的年代大概就是12年前吧,手机上都会有WAP浏览器。当时没接触网络原理,也不 ... [详细]
  • DirectShow Filter 开发指南
    本文总结了 DirectShow Filter 的开发经验,重点介绍了 Source Filter、In-Place Transform Filter 和 Render Filter 的实现方法。通过使用 DirectShow 提供的类,可以简化 Filter 的开发过程。 ... [详细]
  • 本文介绍了 Oracle SQL 中的集合运算、子查询、数据处理、表的创建与管理等内容。包括查询部门号为10和20的员工信息、使用集合运算、子查询的注意事项、数据插入与删除、表的创建与修改等。 ... [详细]
  • centos 7.0 lnmp成功安装过程(很乱)
    下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
  • PHP-Casbin v3.20.0 已经发布,这是一个使用 PHP 语言开发的轻量级开源访问控制框架,支持多种访问控制模型,包括 ACL、RBAC 和 ABAC。新版本在性能上有了显著的提升。 ... [详细]
  • C语言编写线程池的简单实现方法
    2019独角兽企业重金招聘Python工程师标准好文章,一起分享——有时我们会需要大量线程来处理一些相互独立的任务,为了避免频繁的申请释放线程所带 ... [详细]
  • Leetcode学习成长记:天池leetcode基础训练营Task01数组
    前言这是本人第一次参加由Datawhale举办的组队学习活动,这个活动每月一次,之前也一直关注,但未亲身参与过,这次看到活动 ... [详细]
author-avatar
hh呢喃_845
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有