[英]R: Computate NA with mean between, summing first and last NAs
考慮一個數據集:
df1 <- tibble::tribble(~Place, ~Year, ~Cake, ~Coffee, ~Tea,
"Local Cafe 1", 2022, 50, 100, 30,
"Local Cafe 1", 2021, 50, NA, 30,
"Local Cafe 1", 2020, 50, 80, NA,
"Local Cafe 1", 2019, 50, 70, 20,
"Local Cafe 1", 2018, NA, 60, 20,
"Local Cafe 2", 2022, 60, NA, 40,
"Local Cafe 2", 2021, NA, 50, NA,
"Local Cafe 2", 2020, 40, 40, NA,
"Local Cafe 2", 2019, 30, 30, NA,
"Local Cafe 3", 2022, 30, 40, NA,
"Local Cafe 3", 2021, NA, NA, NA)
這是用於視覺表示的相同數據集:
所需的操作:
所需的 output:
橙色單元格 - 是填充值。 我將感謝任何關於一個好的解決方案的建議:)
我們可以按 'Place' 分組,在 'Cake' 到 'Tea' 列上應用na.approx
(來自zoo
),並在末尾用之前的非 NA 值fill
NA
library(dplyr)
library(tidyr)
library(zoo)
df1 %>%
group_by(Place) %>%
mutate(across(Cake:Tea, ~ na.approx(.x, na.rm = FALSE))) %>%
fill(Cake:Tea, .direction = "downup") %>%
ungroup
-輸出
# A tibble: 11 × 5
Place Year Cake Coffee Tea
<chr> <dbl> <dbl> <dbl> <dbl>
1 Local Cafe 1 2022 50 100 30
2 Local Cafe 1 2021 50 90 30
3 Local Cafe 1 2020 50 80 25
4 Local Cafe 1 2019 50 70 20
5 Local Cafe 1 2018 50 60 20
6 Local Cafe 2 2022 60 50 40
7 Local Cafe 2 2021 50 50 40
8 Local Cafe 2 2020 40 40 40
9 Local Cafe 2 2019 30 30 40
10 Local Cafe 3 2022 30 40 NA
11 Local Cafe 3 2021 30 40 NA
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.