r - R:合并具有相同id的行,并展开列
问题描述
**我得到一个这样的数据集:(并且数据集的名字叫“2010.csv”)
ID year month score_1 score_2
100 2010 1 93 85
200 2010 1 94 93
100 2010 2 84 90
200 2010 2 90 90
**我想要的是这个:
ID year month score_1 score_2 year month score_1 score_2
100 2010 1 93 85 2010 2 84 90
200 2010 1 94 93 2010 2 90 90
谁能帮我在R中做到这一点?谢谢!
解决方案
使用末尾注释中可重复显示的数据,首先重塑数据。该reshape
命令将重复ID
和year
列,因此删除除第一个实例之外的所有内容。然后清理名称。如果没有与问题中完全相同的名称并且具有重复的 ID 和年份列是可以的,那么您可以只使用第一行。不使用任何包。
r <- reshape(DF, dir = "wide", idvar = 1:2, timevar = 3)
r <- r[-tail(grep("year|ID", names(r)), -2)]
names(r) <- sub("\\..*", "", names(r))
r
给出这个data.frame:
ID year month score_1 score_2 month score_1 score_2
1 100 2010 1 93 85 2 84 90
2 200 2010 1 94 93 2 90 90
笔记
Lines <- "
ID year month score_1 score_2
100 2010 1 93 85
200 2010 1 94 93
100 2010 2 84 90
200 2010 2 90 90"
DF <- read.table(text = Lines, header = TRUE)
推荐阅读
- angular - 以角度形式显示数据
- javascript - Openlayers自定义控件事件监听器获取地图
- tarantool - Tarantool 模块安装失败搜索清单
- c# - 合并包含列表的字典的最有效方法是什么
- javascript - 语句在查询中不起作用是否打印正确的语句
- angular - 在调用之前动态生成 Angular 方法名称
- lighttpd - 如何将 lightpd 配置为仅阻止外部 IP 而不是 localhost 的 http 连接
- php - PhpStorm 缺少对受保护属性的属性类型声明
- flutter - 将 Flutter 应用程序作为产品部署到 google play 上
- laravel - MPA 与 Laravel 和 Vue(混合方法)