假設我有一個資料框如下:
ColA ColB ColC
1 A NA NA
2 B NA F
3 C D G
我想添加一列(NewColD)并使用 if 陳述句來確定其值。我首先想檢查 ColC。如果ColC 中的資料不是“NA”,我想使用 ColC。否則,如果ColB 不是“NA”,我想使用 ColB。否則,使用 ColA 中的內容。
如果此代碼正確執行,我的新資料框將如下所示:
ColA ColB ColC NewColD
1 A NA NA A
2 B F NA F
3 C D G G
先感謝您!
uj5u.com熱心網友回復:
這是一個使用選項dplyr::coalesce
library(dplyr)
df %>% mutate(NewColD = coalesce(ColC, ColB, ColA))
# ColA ColB ColC NewColD
#1 A <NA> <NA> A
#2 B <NA> F F
#3 C D G G
或者,更詳細地說,使用dplyr::case_when
library(dplyr)
df %>%
mutate(NewColD = case_when(
!is.na(ColC) ~ ColC,
!is.na(ColB) ~ ColB,
TRUE ~ ColA))
# ColA ColB ColC NewColD
#1 A <NA> <NA> A
#2 B <NA> F F
#3 C D G G
或者在使用嵌套ifelse結構的基礎 R 中
transform(df, NewColD = ifelse(
!is.na(ColC), ColC, ifelse(!is.na(ColB), ColB, ColA)))
# ColA ColB ColC NewColD
#1 A <NA> <NA> A
#2 B <NA> F F
#3 C D G G
樣本資料
df <- read.table(text = " ColA ColB ColC
1 A NA NA
2 B NA F
3 C D G", header = T)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/515277.html
標籤:r数据框dplyr
下一篇:根據其他兩列中的值對一列求和
