我正在尝试使用reshape2
库重新组织我的数据框。尽管令人信服,但我无法获得预期的结果。
这是我的data.frame
。
> mydata
Destination S1 S2 S3 S4
1 D1 94 87 84 75
2 D2 94 87 84 75
3 D3 94 87 84 75
4 D4 10 95 92 83
这是我所期待的。
Source Destination Value
S1 D1 94
S2 D1 87
S3 D1 84
S4 D1 75
S1 D2 94
S2 D2 87
S3 D2 84
S4 D2 75
S1 D3 94
S2 D3 87
S3 D3 84
S4 D3 75
S1 D4 10
S2 D4 95
S3 D4 92
S4 D4 83
我尝试转置data.frame
,使用以下内容:
> mydata.T <- t(mydata[,2:ncol(mydata)])
>
> mydata.T
S1 94 94 94 10
S2 87 87 87 95
S3 84 84 84 92
S4 75 75 75 83
我尝试使用melt
,但我无法得到确切的结果。
有人可以帮我吗?
答案 0 :(得分:1)
在t
上使用data.frame
ranspose有什么问题?
如果您想使用“reshape2”,可以尝试以下方法:
mydataLong <- melt(mydata, id.vars="Destination")
mydataLong
# Destination variable value
# 1 D1 S1 94
# 2 D2 S1 94
# 3 D3 S1 94
# 4 D4 S1 10
# 5 D1 S2 87
# 6 D2 S2 87
# 7 D3 S2 87
# 8 D4 S2 95
# 9 D1 S3 84
# 10 D2 S3 84
# 11 D3 S3 84
# 12 D4 S3 92
# 13 D1 S4 75
# 14 D2 S4 75
# 15 D3 S4 75
# 16 D4 S4 83
在基数R中,您可以尝试以下输出:
cbind(mydata[1], stack(mydata[-1]), row.names = NULL)
如果你想要那个紧凑的转置输出,你可以这样做:
dcast(mydataLong, variable ~ Destination)
# variable D1 D2 D3 D4
# 1 S1 94 94 94 10
# 2 S2 87 87 87 95
# 3 S3 84 84 84 92
# 4 S4 75 75 75 83
答案 1 :(得分:0)
data.frame(Destination=mydata$Destination, Value=as.vector(data.matrix(mydata[-1]) ))
我的猜测是,这来自一个表操作,应该是:
as.data.frame(table( something ) )