首页 > 解决方案 > 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中做到这一点?谢谢!

标签: r

解决方案


使用末尾注释中可重复显示的数据,首先重塑数据。该reshape命令将重复IDyear列,因此删除除第一个实例之外的所有内容。然后清理名称。如果没有与问题中完全相同的名称并且具有重复的 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)

推荐阅读