【问题标题】:Fill empty rows with values from other rows用其他行的值填充空行
【发布时间】:2023-02-04 14:53:11
【问题描述】:

我有一个包含许多案例的数据集。每个案例都有两个观察结果。个案编号 1 的第一个观察值的值为 3,第二个观察值的值为 7。个案编号 2 的两个观察值缺失值。我需要编写代码来用案例编号 1 中的相同值填充空单元格,以便案例 2 的第一行与案例 1 的 obs = 1 的值相同,第二行的 obs = 的值相同2. 当然,这是一个更大的数据集的一个非常短的版本,所以我需要一些足够灵活的东西来容纳几百个案例,并且在每个主题中用作填充值的值都会发生变化。

这是一个玩具数据集:

# toy dataset
df <- data.frame(
  case = c(1, 1, 2, 2),
  obs = c(1, 2, 1, 2),
  value = c(3, 7, NA, NA)
)

 #   case obs value
 # 1    1   1     3
 # 2    1   2     7
 # 3    2   1    NA
 # 4    2   2    NA

#期望的输出:

  case obs value
1    1   1     3
2    1   2     7
3    2   1     3
4    2   2     7

【问题讨论】:

    标签: r dplyr tidyr data-manipulation


    【解决方案1】:

    我们可以使用 fillobs 进行分组

    library(dplyr)
    library(tidyr)
    df %>% 
      group_by(obs) %>%
      fill(value) %>%
      ungroup
    

    -输出

    # A tibble: 4 × 3
       case   obs value
      <dbl> <dbl> <dbl>
    1     1     1     3
    2     1     2     7
    3     2     1     3
    4     2     2     7
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-01
      • 1970-01-01
      • 2022-09-29
      • 2021-08-02
      • 1970-01-01
      • 2020-07-13
      • 1970-01-01
      • 2022-01-14
      相关资源
      最近更新 更多