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