我想在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
我一直在研究演员命令,但我看不到这样做的方法:(
如果有人可以提供帮助,我将非常感激:)
答案 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")
这似乎对我有用:)