R数据帧转换值作为名称

时间:2014-11-25 09:21:40

标签: r dataframe transformation reshape

我想在R

中进行以下数据转换
Name Value
type1 value1.1
type2 value2.1
type3 value3.1
type1 value1.2
type2 value2.2
type3 value3.2
type1 value1.3
type2 value2.3
type3 value3.3

应该成为:

       Name Value1 Value2 Value3
type1 value1.1 value1.2 value1.3
type2 value2.1 value2.2 value2.3
type3 value3.1 value3.2 value3.3

我一直在研究演员命令,但我看不到这样做的方法:(

如果有人可以提供帮助,我将非常感激:)

3 个答案:

答案 0 :(得分:4)

可以尝试类似的事情(如果df是您的数据集)

df$Value2 <- paste0("Value", gsub("^.*\\.", "", df$Value)) # Creating an index column
library(reshape2)
dcast(df, Name ~ Value2, value.var = "Value")
#    Name   Value1   Value2   Value3
# 1 type1 value1.1 value1.2 value1.3
# 2 type2 value2.1 value2.2 value2.3
# 3 type3 value3.1 value3.2 value3.3

答案 1 :(得分:2)

问题是你缺乏一个独特的&#34; Id&#34;变量

您可以使用我的&#34; splitstackshape&#34;中的getanID包装,然后dcast.data.table进行重塑:

library(splitstackshape)
dcast.data.table(getanID(mydf, "Name"), Name ~ .id, value.var = "Value")
#     Name        1        2        3
# 1: type1 value1.1 value1.2 value1.3
# 2: type2 value2.1 value2.2 value2.3
# 3: type3 value3.1 value3.2 value3.3

答案 2 :(得分:0)

我刚刚找到一个很好的网站,更详细地解释了演员的功能:An Introduction to reshape2

使用此功能,我已完成以下操作:

mydata$Number <- rep("Value1", "Value2", "Value3", each=3)
dcast(mydata, Name~Number, value.var="Value")

这似乎对我有用:)