gpt4 book ai didi

r - 在 mutate_at 中使用列名称向量

转载 作者:行者123 更新时间:2023-12-02 03:55:04 26 4
gpt4 key购买 nike

这是我的数据:

ID a b c d
1 x 1 2 3
2 y 1 2 3
3 z NA NA NA
4 z 1 2 3
5 y NA NA NA

现在,如果我想用 a 组的 b 平均值替换单列中的 NA(例如 b),我知道如何使用以下代码来实现:

data %>%
group_by(a) %>%
mutate(b = ifelse(is.na(b), as.integer(mean(b, na.rm=TRUE)), b)

我想使用基本相同的代码,但将其应用于 b、c、d 列。但我的代码不起作用,我不知道为什么,它说“错误,大小不兼容 (3),期望 10(组大小)或 1”

cols <- c("b","c","d")
data %>%
group_by(a) %>%
mutate_at(.cols = cols, funs(ifelse(is.na(cols),
as.integer(mean(cols, na.rm=TRUE)), cols)

我假设问题与代码在查看数据时未正确应用列名称有关?

最佳答案

要引用要变异的字符向量,请改用 mutate_if

cols <- c("b","c","d")

data %>%
group_by(a) %>%
mutate_if(names(.) %in% cols,
funs(ifelse(is.na(.), as.integer(mean(., na.rm=TRUE)), .)))

关于r - 在 mutate_at 中使用列名称向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44229915/

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