【问题标题】:How do I add another column in r using mutate and if else statements?如何使用 mutate 和 if else 语句在 r 中添加另一列?
【发布时间】:2020-06-28 03:00:19
【问题描述】:

我有一个大的 csv 文件,我一直在尝试编辑。我一直在尝试创建一个名为 race 的新专栏。当前有一个名为derived_race 的列,其中包含多个种族,包括白人、黑人或非裔美国人、亚洲人、联合等。我需要将derived_race 类别归结为白人、黑人和其他人。我尝试使用 mutate 添加另一列,我使用的代码如下所示:

mutate(selected_public_2018_lar,Race = if (derived_race == 'White'){
print("White")
 } else if (derived_race == 'Black or African American'){
print("Black")
}else {
print("Other")
})

我不断收到如下所示的错误:

错误:mutate() 输入 ..1 有问题。 x 输入 ..1 无法回收到大小 2316993。 ℹ 输入..1selected_public_2018_lar。 ℹ 输入 ..1 的大小必须是 2316993 或 1,而不是 179666。

提前感谢您的帮助!

【问题讨论】:

    标签: r


    【解决方案1】:

    如果我们想在 data.frame 中创建一列,我们可以使用 ifelsecase_when,因为 if/else 未矢量化,而且 print 仅用于打印值

    library(dplyr)
    selected_public_2018_lar <- selected_public_2018_lar %>%
           mutate(Race = case_when(derived_race == 'Black or African American' ~ 'Black',
              derived_race == 'White' ~ White', TRUE ~ "Other"))
    

    或者另一个选项是ifelse

    selected_public_2018_lar %>%
        mutate(Race = ifelse(derived_race == 'Black or African American', 'Black', ifelse(derived_race == 'White', 'White', 'Other')))
    

    recode

    selected_public_2018_lar %>%
        mutate(Race =  recode(`Black or African American` = 'Black',
                          'White' = 'White', .default = 'Other'))
    

    【讨论】:

      猜你喜欢
      • 2020-02-21
      • 1970-01-01
      • 2022-01-06
      • 2020-10-29
      • 2016-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-01
      相关资源
      最近更新 更多