繁体   English   中英

如何将从特定的非 NA 值列计算的平均值输入到现有的平均值列中

[英]How to input average values calculated from specific non NA value columns into existing average column

![文字] Dataframe 正在使用

请参阅 dataframe 图像的链接。 我正在尝试计算缺少 TempAvg 值的行的平均温度。 有些行有 TempMin 和 TempMax,因此可以使用它来计算平均温度。 话虽如此,我需要使用 function 来计算 TempAvg 的行,其中 TempAvg 尚不存在并且将是 NA 值。 我冒着为 TempAvg 列中已经存在的值计算新的 TempAvg 值的风险。 我曾尝试讨论 for 循环,但在继续阅读后发现这不是最好的选择。 由于 dataframe 包含 1300 万行,go 将如何解决此问题。 只是为了澄清我希望保留尽可能多的行,因为检查 TempAvg 不是 NA 的行仅显示 250 万行,这意味着如果我删除具有 NA 值的 TempMin 和 Max 列,则会丢失大量数据

sum(!is.na(Avg))
[1] 2535882

听起来你可以用case_when语句解决这个问题。 就像是:

library(tidyverse)

df %>%
  mutate(TempAvg = case_when(
    !is.na(TempAvg) ~ TempAvg,
    TRUE ~ (TempMax + TempMin) / 2
  ))

使用该代码,您是在说,“创建一个名为 TempAvg 的列,并在其中填充它们不是 NA 的现有 TempAvg 值,否则用 TempMax 和 TempMin 之间的平均值填充它”

经过一些试验和错误,解决方案需要一个简单的修复

Weather2021 <- Weather2021 %>%
    mutate(TempAvg = case_when(
    !is.na(TempAvg) ~ as.numeric(TempAvg),
    !is.na(TempMax) & !is.na(TempMin) ~ (TempMax + TempMin) / 2))

as.numeric 转换看似关键

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM