相关疑难解决方法(0)

dplyr如何对已排序组中的组进行排序?

dplyr功能有一些额外的复杂性,我无法解决.主要是,我想在已排序的组中对第二组进行排序.

所以我有这个data.frame:

a_table <- data.frame(id=1:30, 
    grp1 = sample(LETTERS[1:5], 30, replace=TRUE, prob=c(1,1,2,2,3)), 
    grp2 = sample(letters[6:8], 30, replace=TRUE, prob=c(2,2,3))) 
Run Code Online (Sandbox Code Playgroud)

我首先通过grp1计数条目并对它们进行排序,然后为每个grp1我计算每个的值并对它们grp2进行排序.

我尝试这样做:

a_summary <- a_table %>% 
    group_by(grp1) %>% 
        mutate(frst_count = n()) %>% 
        arrange(desc(frst_count)) %>% 
    group_by(grp2) %>% 
        mutate(scnd_count = n()) %>% 
        arrange(desc(scnd_count))
Run Code Online (Sandbox Code Playgroud)

但显然缺少一些东西,因为没有组summarise,因此没有组排序.其他尝试summarise没有区分组1和组2.

谢谢.

sorting group-by r dplyr

5
推荐指数
1
解决办法
2760
查看次数

如何在 R 中排列嵌套数据(即带父项的数据)?

我有一个具有多个级别的数据集:

  1. 类别(例如“国家/地区”)
  2. 国家(例如“美国”)
  3. 城市(例如“纽约”)
  4. 县(例如“曼哈顿”)
  5. 地点(例如“时代广场”)

每行(LVL 1 条目除外)都链接到上一级的父级。

例如:时代广场->曼哈顿->纽约->美国->国家

我的问题:如何排序这个数据集:

df2 <- structure(list(ID = c(3,6,9,11,12,19,411,50,77,83,105),
                      Parent = c(12,12,77,105,19,NA,3,41,19,77,19),
                      Level = c(3,3,3,3,2,1,4,5,2,3,2),
                      Name = c("New York","Boston","Oxford","Vancouver","USA","Countries",
                               "Manhattan","Times Square","UK","London","Canada")),
                 class = "data.frame",
                 row.names = c(NA, -11L))
Run Code Online (Sandbox Code Playgroud)

进入这个:

df2 <- structure(list(ID = c(19,12,3,41,50,6,77,83,9,105,11),
                      Parent = c(NA,19,12,3,41,12,19,77,77,19,105),
                      Level = c(1,2,3,4,5,3,2,3,3,2,3),
                      Name = c("Countries","USA","New York","Manhattan","Times Square",
                               "Boston","UK","London","Oxford","Canada","Vancouver")),
                 class = "data.frame",
                 row.names = c(NA, -11L))
Run Code Online (Sandbox Code Playgroud)

在 中df2,列表首先按照级别排列,但每个链接的子级别都位于正下方。

我尝试了几种dyplr::arrange()变体(例如arrange(Level, Parent)),但都无法解释嵌套数据。我认为解决方案可能是 group_by() 和使用range(,.by_group = TRUE) 的组合,如此处所做的那样(R,dplyr - group_by() 和arrange() …

r dplyr tidyverse

2
推荐指数
1
解决办法
147
查看次数

标签 统计

dplyr ×2

r ×2

group-by ×1

sorting ×1

tidyverse ×1