Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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_Sorting_Dplyr - Fatal编程技术网

R 按降序排列分组的本地数据帧

R 按降序排列分组的本地数据帧,r,sorting,dplyr,R,Sorting,Dplyr,我有一个本地数据框,我试图通过两个变量(“yr”和“mo”)对其进行分组,得到每组数据的平均值,并对结果进行排序,以便最新数据按降序显示在顶部。但是,我不知道如何让“yr”变量按降序排序。“yr”变量以升序错误显示 library(dplyr) df <- tbl_df(data.frame(yr = c(2009, 2009, 2009, 2010, 2010, 2010, 2011, 2011, 2011), qtr = c(1, 1, 1,

我有一个本地数据框,我试图通过两个变量(“yr”和“mo”)对其进行分组,得到每组数据的平均值,并对结果进行排序,以便最新数据按降序显示在顶部。但是,我不知道如何让“yr”变量按降序排序。“yr”变量以升序错误显示

library(dplyr)
df <- tbl_df(data.frame(yr = c(2009, 2009, 2009, 2010, 2010, 2010, 2011, 2011, 2011), 
                    qtr = c(1, 1, 1, 1, 1, 2, 2, 2, 2),
                    mo = c(1, 1, 2, 3, 3, 4, 5, 5, 5), 
                    date = as.Date(c("2009-01-01", "2009-01-02","2009-02-01",
                                     "2010-03-01","2010-03-02","2010-04-01",
                                     "2011-05-01","2011-05-02","2011-05-03")),
                    x = c(10, 20, 30, 40, 50, 60, 70, 80, 90),
                    y = c(2, 4, 6, 8, 10, 12, 14, 16, 18),
                    z = c(1, 3, 5, 7, 9, 11, 13, 15, 17)))
df %>%
    select(yr, mo, x:z) %>%
    group_by(yr, mo) %>%
    summarize_each(funs(mean)) %>%
    arrange(desc(yr), desc(mo))

Source: local data frame [5 x 5]
Groups: yr [3]

 yr    mo     x     y     z
(dbl) (dbl) (dbl) (dbl) (dbl)
1  2009     2    30     6     5
2  2009     1    15     3     2
3  2010     4    60    12    11
4  2010     3    45     9     8
5  2011     5    80    16    15
df %>%
      select(yr, mo, x:z) %>%
      group_by(yr, mo) %>%
      summarize_each(funs(mean)) %>%
      arrange(yr, mo)

Source: local data frame [5 x 5]
Groups: yr [3]

 yr    mo     x     y     z
(dbl) (dbl) (dbl) (dbl) (dbl)
1  2009     1    15     3     2
2  2009     2    30     6     5
3  2010     3    45     9     8
4  2010     4    60    12    11
5  2011     5    80    16    15
如果我删除“desc(mo)”,只在arrange函数中使用“mo”,我将得到预期的结果,并且数据将按升序在“mo”上排序

library(dplyr)
df <- tbl_df(data.frame(yr = c(2009, 2009, 2009, 2010, 2010, 2010, 2011, 2011, 2011), 
                    qtr = c(1, 1, 1, 1, 1, 2, 2, 2, 2),
                    mo = c(1, 1, 2, 3, 3, 4, 5, 5, 5), 
                    date = as.Date(c("2009-01-01", "2009-01-02","2009-02-01",
                                     "2010-03-01","2010-03-02","2010-04-01",
                                     "2011-05-01","2011-05-02","2011-05-03")),
                    x = c(10, 20, 30, 40, 50, 60, 70, 80, 90),
                    y = c(2, 4, 6, 8, 10, 12, 14, 16, 18),
                    z = c(1, 3, 5, 7, 9, 11, 13, 15, 17)))
df %>%
    select(yr, mo, x:z) %>%
    group_by(yr, mo) %>%
    summarize_each(funs(mean)) %>%
    arrange(desc(yr), desc(mo))

Source: local data frame [5 x 5]
Groups: yr [3]

 yr    mo     x     y     z
(dbl) (dbl) (dbl) (dbl) (dbl)
1  2009     2    30     6     5
2  2009     1    15     3     2
3  2010     4    60    12    11
4  2010     3    45     9     8
5  2011     5    80    16    15
df %>%
      select(yr, mo, x:z) %>%
      group_by(yr, mo) %>%
      summarize_each(funs(mean)) %>%
      arrange(yr, mo)

Source: local data frame [5 x 5]
Groups: yr [3]

 yr    mo     x     y     z
(dbl) (dbl) (dbl) (dbl) (dbl)
1  2009     1    15     3     2
2  2009     2    30     6     5
3  2010     3    45     9     8
4  2010     4    60    12    11
5  2011     5    80    16    15

为什么“yr”变量不会响应desc()函数,而“mo”变量会响应?如何将结果按“yr”降序排序,然后按“mo”降序排序?谢谢

分组似乎干扰了排列

尝试添加一个
解组()

应该给你

    yr mo  x  y  z
1 2011  5 80 16 15
2 2010  4 60 12 11
3 2010  3 45  9  8
4 2009  2 30  6  5
5 2009  1 15  3  2

我想这正是你想要的:
yr
mo
降序。

谢谢!这很有效。然而,我对需要解组感到困惑。根据中的注释,使用新dplyr包执行
mutate
/
summary
操作后,不再需要解组。在当前情况下是否需要取消分组,因为我使用的是
summary\u each
而不是
summary
?在观看本dplyr教程(大约视频的第22分钟)时,我发现了这一点。按2个或多个变量分组时,在执行
mutate
/
summary
命令后,仅删除最后一个变量。因此,需要使用
解组
命令。如果我只按1个变量分组,那么就不需要
ungroup
命令了。啊!很高兴找到官方原因!谢谢你的跟进。