簡體   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