将数据从多行转换为多列[重复]
Posted
技术标签:
【中文标题】将数据从多行转换为多列[重复]【英文标题】:Convert data from many rows to many columns [duplicate] 【发布时间】:2010-11-13 05:52:02 【问题描述】:我有以标准化方式从数据库中出来的数据,其中包含年份、状态和值的字段。
我想对数据进行分析,并需要将其格式化,其中每年是一个字段而不是记录。所以我想要每个记录是一个状态的数据,然后每个年份和每个值都有一个字段那些字段是那一年和那个州的值。
有执行此操作的命令吗?
所以我有:
State Year Value
KY 1998 56
KY 1997 78
IL 1998 48
IL 1997 72
我想要:
State 1997_value 1998_value
KY 78 56
IL 72 48
【问题讨论】:
【参考方案1】:您想使用reshape()
函数。
reshape(data, idvar="State", timevar="Year", direction="wide")
【讨论】:
【参考方案2】:另一种选择是使用由无与伦比的 Hadley Wickham 创建的 reshape 包:
library(reshape)
tuna<-melt(data,id.vars=c("State","Year"))
cast(tuna,State~Year~variable)
【讨论】:
【参考方案3】:您甚至可以将熔化和铸造线组合成一个对 recast 函数的调用。
ds <- data.frame(State = c("KY", "KY", "IL", "IL"),
Year = c(1998, 1997, 1998, 1997),
Value = c(56, 78, 48, 72))
library(reshape)
recast(ds, State ~ Year, id.var = c("State", "Year"))
【讨论】:
在这种情况下,数据已经处于熔化状态,因此您可以跳过熔化步骤。以上是关于将数据从多行转换为多列[重复]的主要内容,如果未能解决你的问题,请参考以下文章