gpt4 book ai didi

r - R中是否有一个函数可以用行标准平均值替换NA?

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

我有一个 tibble 正在与专栏中的 NA 一起使用。我想用列和队列名称列的平均值替换 NA(数字列)。例如,第二行的 NA 将替换为队列为“B”的平均值。对于所有具有 NA 的队列 B,NA 应为 150。

call_center_tbl <- tribble(~queue_name, ~talk_time,
"A", 230,
"B", "NA",
"C", 150,
"A", 200,
"B", 100,
"B", 200,
"C", "NA")

我希望这是有道理的。谢谢你!

最佳答案

使用 data.table 的一种方法如下。在您的数据中,talk_time 是有特征的。所以我将该列转换为数字。然后,对于每个 queue_name,我使用 replace() 将 NA 替换为每组的平均值。

library(data.table)

setDT(call_center_tbl)[, talk_time := as.numeric(talk_time)][,
talk_time := replace(talk_time,
list = which(is.na(talk_time)),
values = mean(talk_time, na.rm = TRUE)),
by = queue_name][]

queue_name talk_time
1: A 230
2: B 150
3: C 150
4: A 200
5: B 100
6: B 200
7: C 150

如果需要,您可以使用 nafill() 代替 replace()

setDT(call_center_tbl)[, talk_time := as.numeric(talk_time)][,
talk_time := nafill(x = talk_time, fill = mean(talk_time, na.rm = TRUE)),
by = queue_name][]

关于r - R中是否有一个函数可以用行标准平均值替换NA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60528973/

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