gpt4 book ai didi

r - 如何最好地将 NA 的两个因素合并为一个变量

转载 作者:行者123 更新时间:2023-12-04 18:05:57 25 4
gpt4 key购买 nike

我有很多这样的变量集:

   Var1    Var2
"Asian" NA
NA "Black"
"White" NA

我想方便地将它们变成这种形式:
   Race
"Asian"
"Black"
"White"

我一直在尝试类似的东西:
Race <- ifelse(is.na(Var1), Var2, Var1)

但这会将值转换为级别的数字,并且数字不匹配(例如,产生 1, 1, 2 )。有没有一种方便的方法来做到这一点(最好使用简短的、不言自明的代码)? (您可以使用 as.character 摆脱这种情况,但必须有更好的方法。)

最佳答案

通过 as.character 进行中间转换:
假设这是您的数据:

dat <- data.frame(Var1=c("Asian",NA,"White"),Var2=c(NA,"Black",NA))

do.call(pmax,c(lapply(dat,as.character),na.rm=TRUE))
#[1] "Asian" "Black" "White"

如果您需要处理特定子集,您可以执行以下操作:
do.call(pmax,c(lapply(dat[c("Var1","Var2")],as.character),na.rm=TRUE))

一个不需要的替代方案 as.character将是:
dat[cbind(1:nrow(dat),max.col(!is.na(dat)))]
#[1] "Asian" "Black" "White"

关于r - 如何最好地将 NA 的两个因素合并为一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27894098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com