我试图根据条件添加多个新列,但是当我运行用于创建新列的代码时,将替换根据条件创建的最后一个新列。
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
答案 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'
)
)