【问题标题】:Add multiple columns based on conditions根据条件添加多列
【发布时间】:2019-08-07 01:37:32
【问题描述】:

我正在尝试根据条件添加多个新列,但是当我运行创建新列的代码时,根据条件创建的最后一个新列被替换。

new_df <- df %>% mutate(dat1_dat2_new = case_when(
  dat1 == 0 & dat2 == 0 ~ 'TW',
  dat1 == 0 & dat2 == 1 ~ 'FS', 
  dat1 == 1 & dat2 == 0 ~ 'FW',
  dat1 == 1 & dat2 == 1 ~ 'TS'))
new_df$dat1_dat2_new

但是当我跑步时

new_df <- df %>% mutate(dat3_dat4_new = case_when(
      dat3 == 0 & dat4 == 0 ~ 'TW',
      dat3 == 0 & dat4 == 1 ~ 'FS', 
      dat3 == 1 & dat4 == 0 ~ 'FW',
      dat3 == 1 & dat4 == 1 ~ 'TS'))
    new_df$dat3_dat4_new

它取代了 new_df$dat1_dat2_new

【问题讨论】:

  • 第二种情况需要new_df &lt;- new_df %&gt;% rest of the code

标签: r dplyr


【解决方案1】:

在第二个代码中,您将原来的new_df 替换为新的new_df。您实际上从未在 dat1_dat2_new 之后添加新列。你需要 - new_df &lt;- new_df %&gt;% rest of the code 在第二种情况下。

另外,更简单的方法是在单个 mutate 中创建两个新列 -

new_df <- df %>% 
  mutate(
    dat1_dat2_new = case_when(
      dat1 == 0 & dat2 == 0 ~ 'TW',
      dat1 == 0 & dat2 == 1 ~ 'FS', 
      dat1 == 1 & dat2 == 0 ~ 'FW',
      dat1 == 1 & dat2 == 1 ~ 'TS'
    ),
    dat3_dat4_new = case_when(
      dat3 == 0 & dat4 == 0 ~ 'TW',
      dat3 == 0 & dat4 == 1 ~ 'FS', 
      dat3 == 1 & dat4 == 0 ~ 'FW',
      dat3 == 1 & dat4 == 1 ~ 'TS'
    )
  )

【讨论】:

    猜你喜欢
    • 2019-07-21
    • 1970-01-01
    • 2021-12-02
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多