如何通过创建新变量为数据框含NA的行赋值分组?
解决方案
你可以用以下几种简单方法实现需求:
基础R方法
直接用is.na()判断A列的缺失值,把逻辑结果转为整数(TRUE对应1,FALSE对应0),或者用ifelse明确指定赋值:
# 方法1:逻辑值转整数 df$group <- as.integer(is.na(df$A)) # 方法2:用ifelse直接指定结果 df$group <- ifelse(is.na(df$A), 1, 0)
tidyverse(dplyr)方法
如果习惯用管道式写法,可借助dplyr包实现:
library(dplyr) # 逻辑值转整数写法 df <- df %>% mutate(group = as.integer(is.na(A))) # ifelse写法 df <- df %>% mutate(group = ifelse(is.na(A), 1, 0))
运行任意一种方法后,数据集都会得到你期望的结果:
| A | B | C | group |
|---|---|---|---|
| 1 | 1 | 1 | 0 |
| 0 | 0 | 1 | 0 |
| NA | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 |
| NA | 0 | 0 | 1 |
内容的提问来源于stack exchange,提问作者MetehanGungor
相关产品推荐
相关产品推荐

