gpt4 book ai didi

在 R 中 reshape 数据

转载 作者:行者123 更新时间:2023-12-04 04:33:41 26 4
gpt4 key购买 nike

我有一个数据集,如帖子底部所示。数据有四列,分别称为 SIC、AT95Group、AT95Mean、AT95Med。 AT95Group 列采用“00”、“01”、“11”和“10”等四个值。目前,对于每个 SIC,AT95Group 的每个值都有四行。我想以某种方式 reshape 数据框,以便每个 SIC 只有一行。虽然早些时候我们为每个(SIC,AT95Group)对创建了两列,分别称为 mean 和 med,但我们希望创建基本上 4*2 列(4 用于组“00”、“11”、“01”、“10”)和 2对于(“平均值”和“中值”)。八列类似于“00Mean”、“11Mean”、“00Med”、“11Med”等,每个 SIC 都有相应的值。

我觉得这很难做到。请有任何建议。谢谢。

> dput(head(pp,20))
structure(list(SIC = c(1L, 1L, 1L, 10L, 10L, 10L, 10L, 12L, 12L,
12L, 12L, 13L, 13L, 13L, 13L, 14L, 14L, 14L, 14L, 15L), AT95Group = c("11",
"10", "00", "11", "01", "00", "10", "01", "11", "10", "00", "11",
"01", "00", "10", "11", "01", "10", "00", "01"), AT95Med = c(0.0691039117115276,
0.0608649722972575, 0.0609974198491522, 0.215571816296268, 0.305308985848382,
0.351312558091798, 0.352704719896703, 0.0459887720804718, 0.0304466181779069,
0.0513875431555943, 0.0541431932578377, 0.0650920855876547, 0.143724642017362,
0.156092793582293, 0.0976059673595903, 0.0116620184564053, 0.0188895210677074,
0.0356836223212195, 0.0513040852859517, 0.0982448708035204),
AT95Mean = c(0.0691039117115276, 0.0608649722972575, 0.0609974198491522,
0.215571816296268, 0.305308985848382, 0.351312558091798,
0.352704719896703, 0.0459887720804718, 0.0304466181779069,
0.0513875431555943, 0.0541431932578377, 0.0650920855876547,
0.143724642017362, 0.156092793582293, 0.0976059673595903,
0.0116620184564053, 0.0188895210677074, 0.0356836223212195,
0.0513040852859517, 0.0982448708035204)), .Names = c("SIC",
"AT95Group", "AT95Med", "AT95Mean"), row.names = c(241L, 236L,
27L, 1126L, 1035L, 1030L, 664L, 1269L, 1259L, 1245L, 1244L, 3919L,
4722L, 3329L, 3222L, 4886L, 4889L, 4951L, 4860L, 5108L), class = "data.frame")

尝试上述代码的粗略失败尝试。不知道如何继续前进。
pp <- unique(dacc1[,c("SIC","AT95Group","AT95Med","AT95Mean")])
xsic <- unique(pp[,"SIC"]);
xlist <- list(xsic,rep("AT95",length(xsic)));

编辑 :

运行 troy 的结果后得到的结果:
> pp1 <- head(pp,20)
SIC AT95Group AT95Med AT95Mean
241 1 11 0.06910391 0.06910391
236 1 10 0.06086497 0.06086497
27 1 00 0.06099742 0.06099742
1126 10 11 0.21557182 0.21557182
1035 10 01 0.30530899 0.30530899
1030 10 00 0.35131256 0.35131256
664 10 10 0.35270472 0.35270472
1269 12 01 0.04598877 0.04598877
1259 12 11 0.03044662 0.03044662
1245 12 10 0.05138754 0.05138754
1244 12 00 0.05414319 0.05414319
3919 13 11 0.06509209 0.06509209
4722 13 01 0.14372464 0.14372464
3329 13 00 0.15609279 0.15609279
3222 13 10 0.09760597 0.09760597
4886 14 11 0.01166202 0.01166202
4889 14 01 0.01888952 0.01888952
4951 14 10 0.03568362 0.03568362
4860 14 00 0.05130409 0.05130409
5108 15 01 0.09824487 0.09824487

> molten<-melt(pp);
Using AT95Group as id variables

molten$variable<-paste(gsub("[AT95]","",molten$variable),molten$AT95Group," ");
cast(molten[,c(1,3,4)], SIC ~ variable);

> cast(molten[,c(1,3,4)], SIC ~ variable);
Error in `[.data.frame`(molten, , c(1, 3, 4)) :
undefined columns selected

最佳答案

作为记录,还有一个 reshape base中的函数(好吧,stats):

reshape(pp, direction = "wide", idvar = "SIC", 
timevar = "AT95Group", v.names = c("AT95Med", "AT95Mean"))
# SIC AT95Med.11 AT95Mean.11 AT95Med.10 AT95Mean.10 AT95Med.00 AT95Mean.00 AT95Med.01 AT95Mean.01
#241 1 0.06910391 0.06910391 0.06086497 0.06086497 0.06099742 0.06099742 NA NA
#1126 10 0.21557182 0.21557182 0.35270472 0.35270472 0.35131256 0.35131256 0.30530899 0.30530899
#1269 12 0.03044662 0.03044662 0.05138754 0.05138754 0.05414319 0.05414319 0.04598877 0.04598877
#3919 13 0.06509209 0.06509209 0.09760597 0.09760597 0.15609279 0.15609279 0.14372464 0.14372464
#4886 14 0.01166202 0.01166202 0.03568362 0.03568362 0.05130409 0.05130409 0.01888952 0.01888952
#5108 15 NA NA NA NA NA NA 0.09824487 0.09824487

关于在 R 中 reshape 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20113884/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com