簡體   English   中英

在 r 中合並范圍組的最有效方法?

[英]the most efficient way to merge the range group in r?

   Age_Group Region  Population
   <fct>     <fct>        <int>
1 0-4       ENGLAND    3384925
2 5-9       ENGLAND    3497402
3 10-14     ENGLAND    3166038
4 15-19     ENGLAND    3120730
5 20-24     ENGLAND    3526141
6 25-29     ENGLAND    3831624
7 30-34     ENGLAND    3757400
8 35-39     ENGLAND    3642643
9 40-44     ENGLAND    3442758
10 45-49     ENGLAND    3850108

嘿伙計們,你有最有效的方法來按不同的時間間隔合並年齡組,比如 5 歲或 10 歲,以形成下面的列表。

       Age_Group Region  Population
   <fct>     <fct>        <int>
1 0-9       ENGLAND    xxx
2 10-19     ENGLAND    xxx
3 20-29     ENGLAND    xxx
...

這是一個tidyverse可能性

library(tidyverse)
df %>%
    mutate(grp = rep(1:(nrow(.)/2), each = 2)) %>%
    group_by(grp) %>%
    mutate(
        Age_Group = paste(Age_Group, collapse = ":"),
        Age_Group = gsub("-\\d+:\\d+", "", Age_Group)) %>%
    mutate(Population = sum(Population)) %>%
    slice(1) %>%
    ungroup() %>%
    select(-grp)
## A tibble: 5 x 3
#  Age_Group Region  Population
#  <chr>     <fct>        <int>
#1 0-9       ENGLAND    6882327
#2 10-19     ENGLAND    6286768
#3 20-29     ENGLAND    7357765
#4 30-39     ENGLAND    7400043
#5 40-49     ENGLAND    7292866

說明:正如@DavidArenburg 所提到的,我們按每兩行對條目進行分組,通過組合每兩行的Age_Group條目來創建一個新的Age_Group標簽,然后聚合Population條目。 大多數工作來自創建新的Age_Group標簽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM