Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中分类变量的排序_R - Fatal编程技术网

R中分类变量的排序

R中分类变量的排序,r,R,我有一个包含三行的数据集: Date State Count 1994-01-05 Alabama 408 1994-01-06 Alabama 784 1994-02-08 Alabama 552 1994-01-05 Alaska 1067 1994-01-06 Alaska 36 1994-02-08 Alaska 8571 1994-01-05 Arizona 385 1994-01-06 Ariz

我有一个包含三行的数据集:

Date         State     Count
1994-01-05   Alabama   408
1994-01-06   Alabama   784
1994-02-08   Alabama   552
1994-01-05   Alaska    1067
1994-01-06   Alaska    36
1994-02-08   Alaska    8571
1994-01-05   Arizona   385
1994-01-06   Arizona   1845
1994-02-08   Arizona   49
五十个州中的每一个都有相同日期的计数。日期和状态的顺序如上所示

我想将日期转换为四行格式*:

Date         State     Count   mean
1994-01-05   Alabama   408     581.333
1994-01-06   Alabama   784     581.333
1994-02-08   Alabama   552     581.333
1994-01-05   Arizona   385     759.666
1994-01-06   Arizona   1845    759.666
1994-02-08   Arizona   49      759.666
1994-01-05   Alaska    1067    3224.666
1994-01-06   Alaska    36      3224.666
1994-02-08   Alaska    8571    3224.666
其中,首先,计算每个状态的计数平均值并将其输入到第四列。然后,将状态从最小均值重新排序到最大均值

我能够使用以下命令完成计算每个状态平均值的第一步:

plyed = ddply(dataset,.(State), transform, mean= mean(Count))
但是,此命令仅计算每个状态的平均值,但未按平均值对状态进行重新排序,如下所示:

Date         State     Count   mean
1994-01-05   Alabama   408     581.333
1994-01-06   Alabama   784     581.333
1994-02-08   Alabama   552     581.333
1994-01-05   Alaska    1067    3224.666
1994-01-06   Alaska    36      3224.666
1994-02-08   Alaska    8571    3224.666
1994-01-05   Arizona   385     759.666
1994-01-06   Arizona   1845    759.666
1994-02-08   Arizona   49      759.666
我不确定现在如何按状态的平均值重新排序,以获得我想要的输出*。我尝试了reorder命令,但是得到了所有不同的和不需要的输出格式。下面是一个我尝试过但没有成功的命令示例:

reorder(plyed$State, plyed$mean, order=is.ordered(plyed$State)) 

您可以使用
plyr::arrange

arrange(ddply(df, .(State), mutate, mean = mean(Count)), mean)
##         Date   State Count    mean
## 1 1994-01-05 Alabama   408  581.33
## 2 1994-01-06 Alabama   784  581.33
## 3 1994-02-08 Alabama   552  581.33
## 4 1994-01-05 Arizona   385  759.67
## 5 1994-01-06 Arizona  1845  759.67
## 6 1994-02-08 Arizona    49  759.67
## 7 1994-01-05  Alaska  1067 3224.67
## 8 1994-01-06  Alaska    36 3224.67
## 9 1994-02-08  Alaska  8571 3224.67
为了好玩,我将添加
dplyr
解决方案

detach(package:plyr)
library(dplyr)
df %.%
    group_by(State) %.%
    mutate(mean = mean(Count)) %.%
    arrange(mean)
尝试使用order()函数。这个问题的答案就是一个很好的例子

new\u df见此处:
new_df <- plyed[with(plyed, order(mean)),]