根据条件添加多列

时间:2019-08-07 01:37:32

标签: r dplyr

我试图根据条件添加多个新列,但是当我运行用于创建新列的代码时,将替换根据条件创建的最后一个新列。

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

1 个答案:

答案 0 :(得分:0)

在第二个代码中,您将原来的new_df替换为新的new_df。您实际上从未在dat1_dat2_new之后添加新列。您需要-在第二种情况下为new_df <- new_df %>% 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'
    )
  )