[英]Creating a new columns based on values from existing multiple columns
我需要基於前三列創建一個名為“條件”的新列(最初不存在)。 如果值來自 cond1,那么它在我的條件列中應該是 1,依此類推。 有什么建議。
cond_test = read.csv("https://www.dropbox.com/s/du76g4vlfz2uaph/cond_test.csv?dl=1")
cond_test
#> ï..cond1 cond2 cond3 condition
#> 1 2 NA NA 1
#> 2 4 NA NA 1
#> 3 NA 3 NA 2
#> 4 NA 5 NA 2
#> 5 NA 4 NA 2
#> 6 NA NA 1 3
#> 7 NA NA 4 3
#> 8 NA NA 7 3
您可以使用max.col
獲取每行中的第一個非 NA 值。
max.col(!is.na(cond_test))
#[1] 1 1 2 2 2 3 3 3
如果您在一行中有多個非 NA 值,您可以查看?max.col
中的ties.method
參數,了解如何處理關系。
在dplyr
您可以使用rowwise
:
library(dplyr)
cond_test %>%
rowwise() %>%
mutate(condition = which.max(!is.na(c_across())))
我嘗試了以下代碼並且正在工作。 但歡迎任何優雅的解決方案。
cond_test$condition = ifelse(!is.na(cond_test$ï..cond1), 1,
ifelse(!is.na(cond_test$cond2), 2, 3))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.