[英]How to create a new column with multiple values based on another column in 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.