簡體   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