繁体   English   中英

根据另一列(在 R 中)中的值创建一个新列

[英]Create a new column based on the values in another column (in R)

我有一个 df ,如下所示。 我想生成一个单独的列“qc”,其中 output 基于列“cl”。 更详细:如果 cl 中的值是 19、12 或 16,则在“qc”列中显示“bad”如果值与给出的 3 个数字不同,则输入“good”。

df

   cl  
a  19  
b  12  
c  16  
d  1   
c  2   

结果

   cl  qc
a  19  bad
b  12  bad
c  16  bad
d  1   good
c  2   good
library(dplyr)
df %>% mutate(qc = case_when(cl %in% c(19,12,16) ~ 'bad',
                             TRUE ~ 'good')
              )

这种特殊情况也可以使用ifelse()轻松完成:

df <- data.frame(cl=c(19,12,16,1,2))

df$qc <- ifelse(df$cl==19|df$cl==12|df$cl==16,
                  "bad",
                  "good")

# cl   qc
# 1 19  bad
# 2 12  bad
# 3 16  bad
# 4  1 good
# 5  2 good

也许更直观。 〜干杯克里斯

这是一个带有%in%的基本 R 解决方案。

bad <- c(12, 16, 19)
df1$qc <- "good"
df1$qc[df1$cl %in% bad] <- "bad"

df1
#  cl   qc
#a 19  bad
#b 12  bad
#c 16  bad
#d  1 good
#e  2 good

数据

df1 <- read.table(text = "
   cl  
a  19  
b  12  
c  16  
d  1   
e  2   
", header = TRUE)

您可以将%in%的结果用于子集c("good", "bad")

df$qc <- c("good", "bad")[1 + df$cl %in% c(12L, 16L, 19L)]
#  cl   qc
#a 19  bad
#b 12  bad
#c 16  bad
#d  1 good
#e  2 good

暂无
暂无

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

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