我不知道我是否通过标题解释了我的意图,但从本质上讲,我想转换
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/