R:合并具有相同ID的行,然后扩展列

时间:2019-01-31 00:19:55

标签: r

**我得到了一个这样的数据集:(数据集的名称称为“ 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中做到吗?谢谢!

1 个答案:

答案 0 :(得分:0)

使用末尾“注释”中可重复显示的数据,首先对数据进行整形。 reshape命令将重复IDyear列,因此删除除第一个实例外的所有实例。然后清理名称。如果名称与问题中的名称不完全相同,并且ID和Year列重复,则可以使用第一行。不使用任何软件包。

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)