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

        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


 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

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

最佳答案

确实有一个名为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")

有关详细信息,请参见?reshape

关于r - 重新排列数据框,以便将行剪切并粘贴为列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14146943/

10-12 22:14
查看更多