使用reshape2重新排序数据框的第一列

时间:2018-09-22 11:30:39

标签: r reshape2 melt

我有一个名为toyData.txt的数据集, 检验参数(n,mu,sigma)对 正态分布随机数和读数的期望和方差

n       mu  sigma  Mean   Variance
100     0     1   0.0068   0.9923
100     0     2   0.0281   3.9589
100     5     1   4.9983   1.0055
100     5     2   4.9850   3.9318
1000    0     1   0.0005   1.0042
1000    0     2   0.0041   3.9920
1000    5     1   4.9886   1.0004
1000    5     2   5.0019   3.9582

我想使用R中的库(reshap2)重新排序(n,mu,sigma) 到(mu,sigma,n)[或(sigma,mu,n)]和 相应地重新排列均值和方差的值, 然后我尝试

dat1 = read.table("toyData.txt", head=T)
library(reshape2)
dat2 = melt(dat1, id.vars=c("mu","sigma","n"))
#  dat3 = dcast(melt(dat1), ???)

那我有dat2作为

    mu sigma    n variable  value
    0     1  100     Mean 0.0068
    0     2  100     Mean 0.0281
    5     1  100     Mean 4.9983
    5     2  100     Mean 4.9850
    0     1 1000     Mean 0.0005
    0     2 1000     Mean 0.0041
    5     1 1000     Mean 4.9886
    5     2 1000     Mean 5.0019
    0     1  100 Variance 0.9923
    0     2  100 Variance 3.9589
    5     1  100 Variance 1.0055
    5     2  100 Variance 3.9318
    0     1 1000 Variance 1.0042
    0     2 1000 Variance 3.9920
    5     1 1000 Variance 1.0004
    5     2 1000 Variance 3.9582

但是,我想获得的输出为

    mu sigma    n   Mean    Variance
    0     1  100  0.0068    0.9923
    0     1 1000  0.0005    1.0042
    0     2  100  0.0281    3.9589
    0     2 1000  0.0041    3.9920
    5     1  100  4.9983    1.0055
    5     1 1000  4.9886    1.0004
    5     2  100  4.9850    3.9318
    5     2 1000  5.0019    3.9582

那我不知道如何进行。 我知道我们可以手动解决此问题,因为 这是一个小数据框,我想知道 是否有办法通过安装包来修复它 我们遇到大型数据集的情况。

2 个答案:

答案 0 :(得分:2)

无需重塑。 只需更改列的顺序,然后安排即可。

<ItemGroup>
  <FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>

答案 1 :(得分:1)

如前所述,您不需要重塑。您还可以使用data.table对数据帧进行排序:

library(data.table)
setDT(dat1)[order(mu,sigma),.(mu,sigma, n, Mean, Variance)]

#returns
   mu sigma    n   Mean Variance
1:  0     1  100 0.0068   0.9923
2:  0     1 1000 0.0005   1.0042
3:  0     2  100 0.0281   3.9589
4:  0     2 1000 0.0041   3.9920
5:  5     1  100 4.9983   1.0055
6:  5     1 1000 4.9886   1.0004
7:  5     2  100 4.9850   3.9318
8:  5     2 1000 5.0019   3.9582