R 从列中包含多个条目的数据框中删除行
对于我的数据中的每个R 从列中包含多个条目的数据框中删除行,r,dplyr,R,Dplyr,对于我的数据中的每个CASE\u ID,应该有1个RF和1个SJ记录 在伪代码中:对于每个CASE_ID、TIN和MPIN,计算每个TIN和MPIN组合的类型数,其中计数大于1,然后使用SJ删除该行 在我上面的例子中,由于TIM SHORT同时拥有RF和SJ记录,我希望为他删除SJ记录 这是上面的数据框: example_df <- data.frame(CASE_ID = c(123,123,123),TIN = c("BOB","TIM",&q
CASE\u ID
,应该有1个RF
和1个SJ
记录
在伪代码中:对于每个CASE_ID、TIN和MPIN,计算每个TIN和MPIN组合的类型数,其中计数大于1,然后使用SJ删除该行
在我上面的例子中,由于TIM SHORT同时拥有RF和SJ记录,我希望为他删除SJ记录
这是上面的数据框:
example_df <- data.frame(CASE_ID = c(123,123,123),TIN = c("BOB","TIM","TIM"),MPIN = c("LONG","SHORT","SHORT"),TYPE = c('SJ','RF','SJ'))
example\u df我假设您只需要一组CASE\u ID、TIN、MPIN的类型计数
t%groupby(CASE\u ID,TIN,MPIN)%>%summary(TYPE\u COUNT=n\u distinct(TYPE))
希望能奏效。我想你的意思是这样的:
example_df %>% group_by(TIN) %>%
mutate(n = n()) %>%
ungroup %>%
mutate(take = ifelse(n == 1, 1, ifelse(n == 2 & TYPE == "RF", 1, 0))) %>%
filter(take == 1) %>%
select(-c(n, take))
t <- example_df %>% group_by(CASE_ID,TIN,MPIN) %>% mutate(TYPE_COUNT = sum(TYPE == "RF" & TYPE == "SJ"))
example_df %>% group_by(TIN) %>%
mutate(n = n()) %>%
ungroup %>%
mutate(take = ifelse(n == 1, 1, ifelse(n == 2 & TYPE == "RF", 1, 0))) %>%
filter(take == 1) %>%
select(-c(n, take))