繁体   English   中英

一个列中的两个条件和另一列中的另一个条件以在 R 中创建一个新列

[英]two conditions in one column and another condition in another column to make a new column in R

    df$A(12, 12, 17, 17, 17, 99, 99, 56, 56, 56, 13, 13, 13, 89, 89, 89)
df$C(Aplus, Bplus, Aplus, A,  Aplus, Dplus, A,  A,  Cminus, Dplus, Aplus, A,  Dplus, Aminus, Aplus, Dplus)
df$D(mt, mt, mt, wt, wt, mt, mt, wt, wt, wt, mt, wt, wt, wt, mt, wt)

我想在底部创建一个新列 E,其中以下内容为真。

WT Aplus 等于 mt 和 Bplus

SS A 等于 wt,Cminus 等于 wt,Dplus 等于 wt

HH Aplus 等于 mt 或 Dplus

df$E(WT, WT, NA, NA, NA, HH, NA, SS, SS, SS, HH, NA, HH, NA, HH, HH)


df1 <- df %>% mutate(E = ifelse(D %in% c("A+" & "B+") & E == "mt", "WT"))
df1 <- df %>% mutate(E = ifelse(D %in% c("A" & "C-" & "D+") == "wt", "SS"))
df1 <- df %>% mutate(E = ifelse(D %in% c("A+" & "D+"), "HH"))

任何帮助将不胜感激,因为我无法获得上述 df$E output。 而对于我运行以实现等于 mt 和 Bplus 的 WT Aplus 的第一行代码,我得到了 5 WT 而不是 2 WT 的 output

df$E(WT, WT, WT, NA, NA, NA, NA, NA, NA, NA, WT, NA, NA, NA, WT, NA)

我们可以将case_when用于多个条件

library(dplyr)
df %>%
    mutate(E = case_when(D %in%  c("A+", "B+") &  E == 'mt' ~ 'WT',
                         D %in% c("A", 'C-', 'D+') == 'wt' ~ 'SS',
                         D %in% c('A+', 'D+') ~ "HH"))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM