gpt4 book ai didi

R:使用 tidyverse 将 NA 替换为 df 中的其他变量

转载 作者:行者123 更新时间:2023-12-05 00:53:26 26 4
gpt4 key购买 nike

我想用tidyverse替换我df中的NA值,我想要的值应该从其他cols中计算出来:

输入:

ID,    X1,    X2,    X3,
"A", 0.96, NA, 0.97,
"B", 1.00, NA, 1.01,
"C", 0.98, 0.03, NA,
"A", 1.00, NA, 1.00,
"D", NA, 0.05, 0.99,

我的愿望是在每一行中找到所有三个 X1, X2, X3 中的哪个变量是 NA 并用其他两个变量的总和来计算它

输出:

ID,    X1,    X2,    X3,
"A", 0.96, 1.93, 0.97,
"B", 1.00, 2.01, 1.01,
"C", 0.98, 0.03, 1.01,
"A", 1.00, 2.00, 1.00,
"D", 1.04, 0.05, 0.99,

谢谢!

最佳答案

非常好的问题。谢谢!

我们在这里使用:

  1. rowSums 添加一列,其中包含 X1-X3 的行总和
  2. 然后我们 mutate across 所有 X
  3. coalesce 每个 XrowSum1
  4. 令人惊讶的是,rowSum1 列因为不需要而消失了 ->
  5. 这是由于 mutate
  6. 的奇妙的 .keep="unused" 参数
library(tidyverse)
df %>%
mutate(rowsum1 = rowSums(select(., starts_with("X")), na.rm=TRUE)) %>%
mutate(across(starts_with("X"), ~coalesce(.,rowsum1)),.keep="unused")

输出:

  ID       X1    X2    X3
<chr> <dbl> <dbl> <dbl>
1 A 0.96 1.93 0.97
2 B 1 2.01 1.01
3 C 0.98 0.03 1.01
4 A 1 2 1
5 D 1.04 0.05 0.99

关于R:使用 tidyverse 将 NA 替换为 df 中的其他变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67849882/

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