如何解决根据现有多个列中的值创建新列
我需要基于前三列创建一个名为“ condition”(最初不存在)的新列。如果值来自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值,则可以查看ties.method
中的?max.col
参数以了解如何处理联系。
在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))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。