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

如何在R中基于另一列的值生成新的布尔类型列?

解决方案

以下是几种用dplyr生成新布尔列的方法,都能保留原列的NA值:

方法1:使用mutate + case_when

这是你尝试的方式,只需按条件匹配并指定对应布尔值,最后用TRUE ~ NA覆盖NA的情况:

library(dplyr)

# 假设你的数据框名为df
df <- df %>%
  mutate(booleanNew = case_when(
    chrBoolean == 'true' ~ TRUE,
    chrBoolean == 'false' ~ FALSE,
    TRUE ~ NA  # 匹配所有未命中的情况(即NA)
  ))

方法2:嵌套ifelse

逻辑更直观,逐层判断值并返回对应结果:

df <- df %>%
  mutate(booleanNew = ifelse(chrBoolean == 'true', TRUE, 
                             ifelse(chrBoolean == 'false', FALSE, NA)))

方法3:转换大写后用as.logical

利用R内置的类型转换函数,先把小写的'true'/'false'转成大写,再直接转布尔型:

df <- df %>%
  mutate(booleanNew = as.logical(toupper(chrBoolean)))

验证示例

用你提供的测试向量验证:

chrBoolean = c('true', 'true', 'false', 'false', 'true', NA)

library(tibble)
tibble(chrBoolean) %>%
  mutate(booleanNew = case_when(
    chrBoolean == 'true' ~ TRUE,
    chrBoolean == 'false' ~ FALSE,
    TRUE ~ NA
  ))

输出的booleanNew列就是你需要的:c(TRUE, TRUE, FALSE, FALSE, TRUE, NA)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:10:49