You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用dplyr合并数据集并按多条件创建新分类列问题咨询

解答

1. NA_character_的定义

R中的缺失值NA是区分数据类型的,NA_character_是字符型专属的缺失值常量,同类的还有整数型的NA_integer_、数值型的NA_real_等。和直接写NA的区别是它强制限定了数据类型,不会出现新列类型不匹配的报错,适合需要提前明确列类型的场景。

2. dplyr实现代码

我们使用dplyr的case_when()函数实现多条件分支,该函数会按从上到下的顺序匹配条件,命中第一个符合的规则后就会停止判断,因此严格按照你给出的条件优先级编写逻辑即可:

# 加载dplyr包
library(dplyr)

# 假设你的数据集名为df,执行以下操作
df <- df %>%
  mutate(
    # 数值类型的分类列
    class_code = case_when(
      M9 == 1 & M15 == 1 ~ 1,
      C9 == 1 & C15 == 1 ~ 2,
      C9 == 0 & C15 == 0 & M9 == 0 & M15 == 0 ~ 3,
      (C9 == 1 & M15 == 0) | (C9 == 0 & M15 == 1) ~ 4,
      .default = NA_integer_
    ),
    # 字符类型的分类名称列(不需要可以删除)
    class_name = case_when(
      class_code == 1 ~ "Married",
      class_code == 2 ~ "Cohabiting",
      class_code == 3 ~ "Non-intact",
      class_code == 4 ~ "Delete",
      .default = NA_character_
    )
  )

注意事项

  • 如果你的四个状态变量是字符型存储的"1"/"0",需要把判断条件里的1、0加上引号,比如改为M9 == "1"
  • 代码中.default参数会匹配所有未命中前面规则的行,包括四个变量任意一个为NA的情况,自动填充对应类型的缺失值,符合你的要求。

内容的提问来源于stack exchange,提问作者Tannya Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 07:57:00