【问题标题】:How can I create a new column from two columns excluding portions of it?如何从不包括部分内容的两列中创建新列?
【发布时间】:2021-03-10 16:02:23
【问题描述】:

Click here to see the image

为真正含糊的标题道歉,但我想知道如何从图像中显示的两列中创建一个新列,以便将“NR”从新列中排除。

例如,新列的第一行是“没有收入”,第 7 行是“5001 到 10k 之间”。 “NR”不会出现在新列中。

非常感谢您的帮助。谢谢。

【问题讨论】:

  • 如果两列都是“NR”,结果应该是什么?如果两者都不是“NR”怎么办?
  • 其实我没有考虑过。但是,在我的情况下,没有两列同时包含“NR”。你的第二个问题的答案相同,我确保我们不会遇到这种情况。谢谢。

标签: r dplyr statistics tidyr


【解决方案1】:

如果您将来使用 dput 而不是屏幕截图提供示例数据,那就太好了。

假设“NR”总是出现在一个列中,您可以这样做来创建一个名为 new_col 的列:

df$new_col <- ifelse(df$new2 != "NR", df$new2, df$new10)

【讨论】:

    【解决方案2】:

    我们可以在将“NR”更改为NA后使用coalesce

    library(dplyr)
    df1 %>%
        mutate(across(c(new2, new10), na_if, "NR")) %>%
        transmute(new_col = coalesce(new2, new10))
    

    【讨论】:

      【解决方案3】:

      我会将 NR 替换为空字符串,然后将所有列粘贴在一起:

      df %>% mutate(across(c(new2, new10), ~if_else(.x=="NR", "", .x))) %>%
         unite(Column, c(new2, new10), sep="")
      

      将 df 替换为您的 data.frame 的名称。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-29
        • 2021-12-16
        • 1970-01-01
        • 1970-01-01
        • 2016-05-14
        • 2016-12-02
        • 2012-07-08
        • 1970-01-01
        相关资源
        最近更新 更多