【问题标题】:How to i create a dummy column whilst using an if statement? [duplicate]如何在使用 if 语句时创建一个虚拟列? [复制]
【发布时间】:2020-04-22 12:14:44
【问题描述】:

我有一个数据集,其中显示了多个不同地方当局支付的税款。

我想创建一个虚拟列,以便如果我在 if 语句中声明特定的地方当局,如果它们匹配,则返回值 1,否则返回值 0。

我试过了:

mutate_if(tax_data, localauthority %in% c('Exeter', 'Glasgow', 'Oxford'), funs(dummy==1))
mutate_if(tax_data, localauthority != c('Exeter', 'Glasgow', 'Oxford'), funs(dummy==0))

任何人都可以就如何在创建虚拟列以满足此条件的同时使用 if 语句提供任何帮助吗?

【问题讨论】:

  • 试试 case_when ,语法简单
  • mutate(tax_data, dummy = as.numeric(localauthority %in% c('Exeter', 'Glasgow', 'Oxford'))
  • 要更清楚地查看ifelse() 虚拟变量语句,请查看here
  • mutate_ 用于选择要“变异”的列
  • 试试mutate(tax_data, dummy = ifelse(localauthority %in% c('Exeter', 'Glasgow', 'Oxford'), 1, 0) 此外,如果您提供可重现的示例,将更容易回答您的问题。请参阅 [此处] (stackoverflow.com/questions/5963269/…),了解如何制作出色的 R 可重现示例

标签: r if-statement tidyverse dplyr


【解决方案1】:

变异和 case_when:


# `%notin%` <- Negate(`%in%`)

tax_data%>% mutate(dummy = case_when(
                  localauthority %in% c('Exeter', 'Glasgow', 'Oxford')~ 1,
                  localauthority %notin% c('Exeter', 'Glasgow', 'Oxford')~0
                                      ) 

或使用 ifelse:


tax_data%>% mutate(dummy = ifelse(localauthority %in% c('Exeter', 'Glasgow', 'Oxford'),1,0))

【讨论】:

    猜你喜欢
    • 2017-11-04
    • 2015-09-17
    • 1970-01-01
    • 2019-06-20
    • 1970-01-01
    • 2020-03-03
    • 1970-01-01
    • 2020-08-23
    • 2021-12-19
    相关资源
    最近更新 更多