首页 > 解决方案 > 如何用R中以前的非零数据行填充缺失的数据行?

问题描述

我有一个缺少一些数据行的数据框,我必须用前一个非零行(在 B 和 C 列中)填充它,并在(D 列)中填充零。

     A         B     C    D
1 2020-01-03  4.25  4.5  250k
2 2020-01-04  na    na    na
3 2020-01-05  4     4    150k
4 2020-01-06  na    na    na
5 2020-01-07  na    na    na
6 2020-01-07  4.5   3     78k

预期产出

    A          B     C    D
1 2020-01-03  4.25  4.5  250k
2 2020-01-04  4.25  4.5   0
3 2020-01-05  4     4    150k
4 2020-01-06  4     4     0
5 2020-01-07  4     4     0
6 2020-01-07  4.5   3     78k

标签: r

解决方案


library(tidyr)
library(dplyr)

df %>% fill(c(B, C), .direction = "down") %>%
  mutate(D = ifelse(is.na(D), 0, D))

           A    B   C    D
1 2020-01-03 4.25 4.5 250k
2 2020-01-04 4.25 4.5    0
3 2020-01-05 4.00 4.0 150k
4 2020-01-06 4.00 4.0    0
5 2020-01-07 4.00 4.0    0
6 2020-01-07 4.50 3.0  78k

使用的输入

df <- structure(list(A = c("2020-01-03", "2020-01-04", "2020-01-05", 
"2020-01-06", "2020-01-07", "2020-01-07"), B = c(4.25, NA, 4, 
NA, NA, 4.5), C = c(4.5, NA, 4, NA, NA, 3), D = c("250k", NA, 
"150k", NA, NA, "78k")), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5", "6"))

推荐阅读