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

如何在R语言中利用逻辑值合并两列数据生成VAT状态列?

解决方法

首先先构造你的示例数据(方便测试):

library(tidyverse)

farmers_vat <- tibble(
  `VAT tax payer` = c("Yes", "No"),
  `Flat rate farmer` = c("No", "Yes")
)

接下来用几种不同的方式实现需求:

方法1:用if_else(最简洁,适合只有两类的场景)

因为数据里每一行只会有一个"Yes",且只有两种类别,直接判断第一列是否为"Yes",是就返回对应类别,否则返回另一类:

farmers_vat_result <- farmers_vat %>%
  mutate(VAT_status = if_else(`VAT tax payer` == "Yes", 
                              "VAT tax payer", 
                              "Flat rate farmer")) %>%
  select(VAT_status) # 保留目标列,删除原有两列

方法2:用case_when(扩展性更强,后续加类别可直接追加条件)

如果以后可能新增其他VAT状态类别,用case_when会更灵活:

farmers_vat_result <- farmers_vat %>%
  mutate(VAT_status = case_when(
    `VAT tax payer` == "Yes" ~ "VAT tax payer",
    `Flat rate farmer` == "Yes" ~ "Flat rate farmer"
    # 后续加新类别直接在这里追加判断行即可
  )) %>%
  select(VAT_status)

方法3:通用型写法(自动匹配"Yes"对应的列名)

如果列数较多或者不想硬编码类别名称,可以用rowwise+c_across动态获取每行"Yes"所在的列名:

farmers_vat_result <- farmers_vat %>%
  rowwise() %>%
  mutate(VAT_status = names(.)[which(c_across(everything()) == "Yes")]) %>%
  ungroup() %>%
  select(VAT_status)

运行任意一种方法后,farmers_vat_result就是你需要的结果:

VAT_status
VAT tax payer
Flat rate farmer

内容的提问来源于stack exchange,提问作者Pawek-13

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 08:17:13