我对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(),但找不到任何好的方法。 有人可以帮我吗?
答案 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)