gpt4 book ai didi

r - case_when 替换的列具有不同的类型

转载 作者:行者123 更新时间:2023-12-05 08:15:43 39 4
gpt4 key购买 nike

我正在处理以下需要使用 case_when 的问题。但是,我遇到了错误消息 Error: must be a logical vector, not a double vector 因为替换的列不是同一类型(由于 bind_rows,有些是逻辑的,有些是 double 的) >).我正在寻找一个干净的解决方案来获得所需的输出。

#set empty dataframe with column names
df <- setNames(data.frame(matrix(ncol = 5, nrow = 0)), c("a", "b", "c","d","e"))
df_subset <- data.frame(b=c(1,2))
df1 <- bind_rows(df,df_subset)%>%mutate(type="b")
df1
a b c d e type
1 NA 1 NA NA NA b
2 NA 2 NA NA NA b

df1%>%mutate(result=case_when(type=="a"~a,
type=="b"~b,
type=="c"~c,
type=="d"~d,
type=="e"~e,
T~NA_real_))

Error: must be a logical vector, not a double vector

预期输出:(注意:我并不总是知道b列是否有值)

df1%>%mutate(a=NA_real_,
c=NA_real_,
d=NA_real_,
e=NA_real_,
result=case_when(type=="a"~a,
type=="b"~b,
type=="c"~c,
type=="d"~d,
type=="e"~e,
T~NA_real_))

#desired output
a b c d e type result
1 NA 1 NA NA NA b 1
2 NA 2 NA NA NA b 2

最佳答案

我认为您可能正在寻找:

df1 %>%
rowwise() %>%
mutate(result = get(type))

a b c d e type result
<lgl> <dbl> <lgl> <lgl> <lgl> <chr> <dbl>
1 NA 1 NA NA NA b 1
2 NA 2 NA NA NA b 2

关于r - case_when 替换的列具有不同的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74536749/

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