重新排列数据框,以便将行剪切并粘贴为列

Sta*_*t-R 2 r data-manipulation reshape dataframe

我不知道我是否通过标题解释了我的意图,但实质上我想转换

        mean    sd
v1  -32.72  0.565
v2  -50.47  1.543
v3  -30.17  0.9295
v4  -38.56  0.4541
g1  5.649   0.02509
g2  1.672   0.02992
g3  3.139   0.03507
g4  7.169   0.06703
y1  271.1   3.48
y2  123.7   1.81
y3  138.9   2.727
y4  405.5   4.396
Run Code Online (Sandbox Code Playgroud)

 v.mean v.sd    g.mean  g.sd    y.mean  y.sd
-32.72  0.565   5.649   0.02509 271.1   3.48
-50.47  1.543   1.672   0.02992 123.7   1.81
-30.17  0.9295  3.139   0.03507 138.9   2.727
-38.56  0.4541  7.169   0.06703 405.5   4.396
Run Code Online (Sandbox Code Playgroud)

我想这样做而不使用for循环.我觉得有一些reshape功能可以做到这一点.我有大量具有此配置的数据集.所以,我想要一些矢量化解决方案......而且,长度可以是任何东西.这里,在样本数据中,系列长度为4.另外,我对列名称并不挑剔.我可以实现使用names(dataframe)=c(....

The*_*ras 5

确实有一个名为的功能reshape.假设您的data.frame被命名为"data",请执行以下操作以获得所需的结果:

data$group <- substr(rownames(data),1,1)
data$id <- substr(rownames(data),2,2)
result <- reshape(data, v.names=c("mean","sd"), idvar="id", timevar="group", direction="wide")
Run Code Online (Sandbox Code Playgroud)

有关详情,请参阅 ?reshape

  • 感谢您说明如何从rownames中提取"reshape"信息. (2认同)