首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重塑数据集

重塑数据集
EN

Stack Overflow用户
提问于 2020-10-03 16:32:56
回答 1查看 41关注 0票数 0

我是R的新手,现在还不是很在行。我正在使用一个数据帧,看起来像这样:

代码语言:javascript
复制
 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 

但我想重塑它,让它看起来像:

代码语言:javascript
复制
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(),但是我找不到任何好的方法。有人能帮帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2020-10-03 17:08:11

代码语言:javascript
复制
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

给予,

代码语言:javascript
复制
  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

数据:

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64182265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档