gpt4 book ai didi

r - separate() 在 tidyr 中与 NA

转载 作者:行者123 更新时间:2023-12-02 01:03:30 25 4
gpt4 key购买 nike

我有一个与 中的 separate() 相关的问题包裹。当数据框中没有 NA 时, separate() 起作用。我一直在使用这个功能。但是,今天我有一个案例,其中数据框中有 NA。 separate() 返回错误信息。我可能很傻。但是,我想知道 可能不是为这种数据清理而设计的。或者有什么方法 separate() 可以与 NA 一起使用?非常感谢您抽出宝贵时间。

这是根据评论更新的示例。假设我想分隔 y 中的字符并创建新列。如果我删除带有 NA 的行,separate() 将起作用。但是,我不想删除该行,我该怎么办?

x <- c("a-1","b-2","c-3")
y <- c("d-4","e-5", NA)
z <- c("f-6", "g-7", "h-8")

foo <- data.frame(x,y,z, stringsAsFactors = F)

ana <- foo %>%
separate(y, c("part1", "part2"))

# > foo
# x y z
# 1 a-1 d-4 f-6
# 2 b-2 e-5 g-7
# 3 c-3 <NA> h-8
# > ana <- foo %>%
# + separate(y, c("part1", "part2"))
# Error: Values not split into 2 pieces at 3

最佳答案

一种方法是:

    res <- foo %>% 
mutate(y=ifelse(is.na(y), paste0(NA,"-", NA), y)) %>%
separate(y, c('part1', 'part2'))
res[res=='NA'] <- NA
res
# x part1 part2 z
#1 a-1 d 4 f-6
#2 b-2 e 5 g-7
#3 c-3 <NA> <NA> h-8

关于r - separate() 在 tidyr 中与 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25374969/

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