gpt4 book ai didi

r - 将一组分类变量转换为单个向量的函数

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

有很多关于创建虚拟变量的帖子,但就我而言,我有一组类似于虚拟变量的列,需要重新编码回一列。

给定一组分类/字符串变量(美国的县):

a<-c(NA,NA,"Cameron","Luzerne");b<-c(NA,"Luzerne",NA,NA);c<-c("Chester",NA,NA,NA)
df<-as.data.frame(cbind(a,b,c))

如何创建一个可以将它们转换为单个类别的函数?该函数应该适用于任何连续的字符串列集。

结果应如下所示:
newcol    a           b          c
Chester <NA> <NA> Chester
Luzerne <NA> Luzerne <NA>
Cameron Cameron <NA> <NA>
Luzerne <NA> Luzerne <NA>

我写了这个函数,它接受三个参数:
cn<-function(df,s,f){
for(i in seq_along(df[ ,c(s:f)]) ) # for specified columns in a dataframe...
ifelse(is.na(df[,i]),NA,df[ ,i] ) # return value if not NA
}

但它不起作用。我尝试了各种类似的尝试。失败。

这个想法是采用具有一定数量字符串列的数据框并将它们的值(如果不是空白)移动到新列。

最佳答案

我们可以使用 coalesce

library(dplyr)
df %>%
mutate_all(as.character) %>%
mutate(newcolumn = coalesce(!!! .)) %>%
select(newcolumn, everything())
# newcolumn a b c
#1 Chester <NA> <NA> Chester
#2 Luzerne <NA> Luzerne <NA>
#3 Cameron Cameron <NA> <NA>
#4 Luzerne Luzerne <NA> <NA>

base R , 一个选项是 pmax
do.call(pmax, c(lapply(df, as.character), na.rm = TRUE))
#[1] "Chester" "Luzerne" "Cameron" "Luzerne"

关于r - 将一组分类变量转换为单个向量的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61599795/

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