r - 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”
解决方案
使用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))
推荐阅读
- ruby-on-rails - 安装旧 Ruby Gems 的问题
- merge - 拆分和合并由 ANTLR 生成的 AST
- teradata - 使用 varchar 列作为 Teradata 中的分区来加速截断
- matplotlib - 在 Julia 中使用极坐标的热图或等高线图
- php - 在会话中使用用户 ID 更新用户信息
- f# - 二维数组的基数是什么意思?
- c# - 获取 Windows 10 中已安装语言的列表
- angular - 用另一个对象替换对象
- javascript - Javascript - 为什么我的应用程序认为这个数组是空的?
- java - 将“Spring Data JPA”方法查询转换为 JPQL 查询