簡體   English   中英

根據現有多列的值創建新列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM