R:将所有组一分为二(dplyr)

R:将所有组一分为二(dplyr),r,dataframe,dplyr,split,grouping,R,Dataframe,Dplyr,Split,Grouping,我的数据是分组的,但我想将每个组分成两部分,如下面的示例所示。group\u half的内容实际上并不重要,它可以是类似于1a/1b或1.1/1.2的任何内容。关于如何使用dplyr执行此操作,有何建议?谢谢 col_1 <- c(23,31,98,76,47,65,23,76,3,47,54,56) group <- c(1,1,1,1,2,2,2,2,3,3,3,3) group_half <- c(1.1, 1.1, 1.2, 1.2, 2.1, 2.1, 2.2, 2

我的数据是分组的,但我想将每个组分成两部分,如下面的示例所示。
group\u half
的内容实际上并不重要,它可以是类似于
1a
/
1b
1.1
/
1.2
的任何内容。关于如何使用dplyr执行此操作,有何建议?谢谢

col_1 <- c(23,31,98,76,47,65,23,76,3,47,54,56)
group <- c(1,1,1,1,2,2,2,2,3,3,3,3)

group_half <- c(1.1, 1.1, 1.2, 1.2, 2.1, 2.1, 2.2, 2.2, 3.1, 3.1, 3.2, 3.2)
df1 <- data.frame(col_1, group, group_half)

# col_1   group   group_half
#    23       1          1.1
#    31       1          1.1
#    98       1          1.2
#    76       1          1.2
#    47       2          2.1
#    65       2          2.1
#    23       2          2.2
#    76       2          2.2
#     3       3          3.1
#    47       3          3.1
#    54       3          3.2
#    56       3          3.2
col_1这里有两个选项:

  • 如果每组中的行数始终为偶数

  • 太神了非常感谢。
    library(dplyr)
    
    df1 %>% 
      group_by(group) %>% 
      mutate(group_half = paste(group, rep(1:2, each = n()/2), sep = '.')) %>% 
      ungroup
    
    #   col_1 group group_half
    #   <dbl> <dbl> <chr>     
    # 1    23     1 1.1       
    # 2    31     1 1.1       
    # 3    98     1 1.2       
    # 4    76     1 1.2       
    # 5    47     2 2.1       
    # 6    65     2 2.1       
    # 7    23     2 2.2       
    # 8    76     2 2.2       
    # 9     3     3 3.1       
    #10    47     3 3.1       
    #11    54     3 3.2       
    #12    56     3 3.2       
    
    df1 %>%
      group_by(group) %>%
      mutate(group_half = paste(group,as.integer(row_number() > n()/2) + 1, sep = '.')) %>% 
      ungroup