我正在寻找内置的R函数,以便根据列值的条件将data.frame
拆分为数据帧列表。
为了举例说明,请考虑下面的data.frame
:
date var_1 var_2
date_1 a b
date_1 b a
date_2 c b
date_2 b c
date_2 a b
date_2 b a
具体分组条件为:
var_1 %in% var_2 & var_2 %in% var_1 & date == date_x
,
其中CCD_ 4贯穿CCD_。这些条件定义了三组:
date var_1 var_2
date_1 a b
date_1 b a
date var_1 var_2
date_2 c b
date_2 b c
date var_1 var_2
date_2 a b
date_2 b a
使用dplyr
,您可以使用sort
var_1
和var_2
rowwise
以及split
获得相等的date
和sorted
值。
library(dplyr)
df %>%
rowwise() %>%
mutate(sorted = list(sort(c(var_1, var_2)))) %>%
group_by(date, sorted) %>%
group_split() %>%
map(~ select(.x, -sorted))
输出
[[1]]
# A tibble: 2 × 3
date var_1 var_2
<chr> <chr> <chr>
1 date_1 a b
2 date_1 b a
[[2]]
# A tibble: 2 × 3
date var_1 var_2
<chr> <chr> <chr>
1 date_2 a b
2 date_2 b a
[[3]]
# A tibble: 2 × 3
date var_1 var_2
<chr> <chr> <chr>
1 date_2 c b
2 date_2 b c