将列值重新整形为列名称

时间:2015-06-23 10:26:57

标签: r reshape

我有一个具有以下结构的数据集:

df <- data.frame(mult=c(1,2,3,4),red=c(1,0.9,0.8,0.7),
result=c('value1','value2','value3','value4'))

我想在三维图中显示(x轴:多轴,y轴:红色,x-y点将是'结果')或多个二维图。显然,真正的DF有更多的行和多重和红色的组合。

专栏&amp; amp;红色没有重复的值。我想要的是将DF重塑为DF1:

-   1      0.9      0.8     0.7
1   value1 
2          value2
3                  value3
4  .....
基本上是这样的:

1)[mult]值保持原样(第1列)
2)[red]值成为列名。
3)'mult'和'red'之间的每个交叉都是一个值     新DF

我的偏好是使用 reshape 功能执行此操作,但其他包也可以。

提前致谢,p。

3 个答案:

答案 0 :(得分:5)

尝试

gui.__controllers[0].__select.selectedOptions[0].value

答案 1 :(得分:2)

以下是使用tidyr

的方法
library(tidyr)
out = rev(spread(df[-1], red, result))
out[is.na(out)] = ''

#> out
#       1    0.9    0.8    0.7
#1 value1                     
#2        value2              
#3               value3       
#4                      value4

答案 2 :(得分:1)

按要求使用重塑

df <- data.frame(mult=c(1,2,3,4),red=c(1,0.9,0.8,0.7),
                 result=c('value1','value2','value3','value4'))
df$result = as.character(df$result)
dfWide = reshape(data = df, idvar = "mult", timevar = "red", v.names = "result", direction = "wide")
rownames(dfWide) = dfWide$mult
dfWide$mult = NULL
colnames(dfWide) = gsub(pattern = "result.", replacement = "", colnames(dfWide) )
dfWide[is.na(dfWide)] = ''
dfWide

#        1    0.9    0.8    0.7
# 1 value1                     
# 2        value2              
# 3               value3       
# 4                      value4