首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R:转换数据(要素值作为列名)

R:转换数据(要素值作为列名)
EN

Stack Overflow用户
提问于 2014-12-11 15:40:53
回答 1查看 649关注 0票数 3

我有一个想要转换成另一种格式的数据集:

数据看起来如下(出于隐私问题,我不能将原始数据放在这里):

代码语言:javascript
复制
ID1 ID2 Month   Value
1   A   Jan-03  10
2   B   Jan-03  11
1   A   Feb-03  12
2   B   Feb-03  13
1   A   Mar-03  14
2   B   Mar-03  15

我希望月份列作为列名,格式如下:

代码语言:javascript
复制
ID1 ID2 Jan-03  Feb-03  Mar-03
1   A   10  12  14
2   B   11  13  16

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-11 15:42:19

你可以试试

代码语言:javascript
复制
 df$Month <- factor(df$Month, levels=unique(df$Month))
 reshape(df, idvar=c('ID1', 'ID2'), timevar='Month', direction='wide')
 #  ID1 ID2 Value.Jan-03 Value.Feb-03 Value.Mar-03
 #1   1   A           10           12           14
 #2   2   B           11           13           15

代码语言:javascript
复制
library(reshape2)
dcast(df, ID1+ID2~Month, value.var='Value')
#   ID1 ID2 Jan-03 Feb-03 Mar-03
#1   1   A     10     12     14
#2   2   B     11     13     15

代码语言:javascript
复制
library(tidyr)
spread(df, Month, Value)
#   ID1 ID2 Jan-03 Feb-03 Mar-03
#1   1   A     10     12     14
#2   2   B     11     13     15

数据

代码语言:javascript
复制
df <- structure(list(ID1 = c(1L, 2L, 1L, 2L, 1L, 2L), ID2 = c("A", 
"B", "A", "B", "A", "B"), Month = c("Jan-03", "Jan-03", "Feb-03", 
"Feb-03", "Mar-03", "Mar-03"), Value = 10:15), .Names = c("ID1", 
"ID2", "Month", "Value"), class = "data.frame", row.names = c(NA, 
-6L))
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27426699

复制
相关文章

相似问题

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