从长到高转换但是对列标题进行分组

drs*_*vok 2 r reshape2 data.table

我有一个长形式的data.frame.我想重塑一下,但我关心列的排序.

这是一个玩具的例子.实际上,我会有更多的团体(grp).

# Minimum working example

mwe <- "grp mean sd label

1  C90   90 19 Heart_rate
2  D20   86 18 Heart_rate
3  H09   80 16 Heart_rate
9  Z89   89 18 Heart_rate"

# Read in the text data

dd <- read.table(text=mwe, header=TRUE)
Run Code Online (Sandbox Code Playgroud)

我试过这个解决方案没有成功.

dcast(setDT(dd), label~grp, value.var=list("mean", "sd"), sep="_" )

    label mean_C90 mean_D20 mean_H09 mean_Z89 sd_C90 sd_D20 sd_H09 sd_Z89
1: Heart_rate       90       86       80       89     19     18     16     18
Run Code Online (Sandbox Code Playgroud)

我想是后列label下令由grp然后通过meansd......像这样

    label mean_C90 sd_C90 mean_D20 sd_D20 mean_H09 sd_H09 mean_Z89 sd_Z89
Run Code Online (Sandbox Code Playgroud)

我卡住了!

mto*_*oto 7

你需要融dd第一,使值meansd是在同一列:

dcast(melt(dd), label ~ grp + variable)
#       label C90_mean C90_sd D20_mean D20_sd H09_mean H09_sd Z89_mean Z89_sd
#1 Heart_rate       90     19       86     18       80     16       89     18
Run Code Online (Sandbox Code Playgroud)