重塑数据集

时间:2020-10-03 08:32:55

标签: r dataframe data-structures

我对R非常陌生,但我仍然不太擅长。 我正在使用一个看起来像这样的数据框:

 ID      ESG var         Y2009     Y2010     Y2011
 A      ESG score         5.1       3.5       4.8       
 A      Emissions         3.0       1.4       1.3 
 B      ESG score         6.5       4.6       2.1 
 B      Emissions         3.6       1.9       1.6 

但是我想重塑它并使它看起来像:

ID   YEARS    ESG score      Emissions
 A    2009        5.1             3.0
 A    2010        3.5             1.4
 A    2011        4.8             1.3
 B    2009        6.5             3.6
 B    2010        4.6             1.9
 B    2011        2.1             1.6 

我需要一个具有三个值(2009、2010、2011)的一年变量,并转到两个具有相应数值的ESG变量(ESG得分和排放)。

我试图使用函数reshape()和melt(),但找不到任何好的方法。 有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

library(reshape)

out <- cast(melt(df, id=c("ID","ESG.var")),ID+variable~ESG.var,value="value")
out[,2] <- as.numeric(gsub("Y","",out[,2]))    
colnames(out)[2] <-"YEARS"
out

给予

  ID YEARS Emissions ESG score
1  A  2009       3.0       5.1
2  A  2010       1.4       3.5
3  A  2011       1.3       4.8
4  B  2009       3.6       6.5
5  B  2010       1.9       4.6
6  B  2011       1.6       2.1

数据:

df <- read.table(text="ID      'ESG var'         Y2009     Y2010     Y2011
 A      'ESG score'         5.1       3.5       4.8       
 A      'Emissions'         3.0       1.4       1.3 
 B      'ESG score'         6.5       4.6       2.1 
 B      'Emissions'         3.6       1.9       1.6",header=T, stringsAsFactors=FALSE)