首页 > 解决方案 > R 表示组是否有值

问题描述

data=data.frame(GROUP=c(1,1,1,2,2,2,3,3,3,4,4,4),
VAR=c('A','B','C','A','B','C','A','B','C','A','B','C'),
SCORE=c(3,6,NA,NA,NA,NA,1,NA,5,5,2,NA),
NEWVAR=c(1,1,1,NA,NA,NA,2,2,2,1,1,1))

score1 = c(2,3,7)
score2 = c(0,5,6)

我有除“NEWVAR”之外的所有列的“数据”,我希望像这样创建它:

如果特定“GROUP”的 score1 %in% SCORE,则将值“1”赋予“NEWVAR”

如果 score2 %in% SCORE & score1 不在 SCORE 中的特定“组”,则将值“2”赋予“NEWVAR”

标签: rdata.tablepipe

解决方案


使用dplyr

input <- data %>% select(-NEWVAR)
input %>%
  group_by(GROUP) %>%
  mutate(NEWVAR=case_when(any(SCORE %in% score1) ~ 1,
                          any(SCORE %in% score2 & !(SCORE %in% score1)) ~ 2))

推荐阅读