如何使用dplyr组管道获取集合差异和交点
我有以下数据框:如何使用dplyr组管道获取集合差异和交点,r,tidyverse,R,Tidyverse,我有以下数据框: library(tidyverse) dat <- tribble( ~category, ~status, ~content, 1, "control", "A", 1, "control", "Z", 1, "treated", "A", 1, "treated", "Z", 1, "control", "B", 2, "control", "C", 2, "control", "D", 2, "treated", "C",
library(tidyverse)
dat <- tribble(
~category, ~status, ~content,
1, "control", "A",
1, "control", "Z",
1, "treated", "A",
1, "treated", "Z",
1, "control", "B",
2, "control", "C",
2, "control", "D",
2, "treated", "C",
2, "treated", "F"
) %>%
arrange(category, status, content)
dat
仅处理差异的输出:
category differences_control_only
1 B
2 D
category differences_treated_only
1 not_available
2 F
处理的与控制的交叉点的输出:
category intersection
1 A
1 Z
2 C
因此,在一天结束时,将有3个数据帧作为输出。
我怎样才能做到这一点
在此示例中,分组仅基于一列(category
)
在实际情况下,分组可以是多列。要获得差异,我们可以按
类别
和内容
进行分组,并选择只有一个不同状态的组
library(dplyr)
dat %>% group_by(category, content) %>% filter(n_distinct(status) == 1)
# category status content
# <dbl> <chr> <chr>
#1 1 control B
#2 2 control D
#3 2 treated F
要获得差异,我们可以按
类别
和
内容
对您进行分组,并选择只有一个不同状态的组
library(dplyr)
dat %>% group_by(category, content) %>% filter(n_distinct(status) == 1)
# category status content
# <dbl> <chr> <chr>
#1 1 control B
#2 2 control D
#3 2 treated F
我们可以使用
data.table
library(data.table)
setDT(dat)[, .SD[uniqueN(status) > 1], .(category, content)]
我们可以使用
data.table
library(data.table)
setDT(dat)[, .SD[uniqueN(status) > 1], .(category, content)]
谢谢,但有不同之处,我还想指出内容的
状态。我怎样才能做到这一点呢?谢谢,但有不同之处,我还想指出内容的状态。我怎样才能做到这一点?