是否可以根据条件从不同的数据帧中估算多个值?

Tom*_*Tom 2 r dataframe dplyr

假设我有以下数据框......

# Starting dataframe
data <- tribble(
  ~ID, ~Excluded, ~colA, ~colB, ~colC, ~col_mean, ~varA, ~varB,
  "A", TRUE,      1,     1,     1,     1,         "X",   10,
  "B", FALSE,     NA,    2,     2,     NA,        "Y",   20,
  "C", FALSE,     3,     3,     3,     3,         "Z",   30
)
Run Code Online (Sandbox Code Playgroud)

以及一个子集数据框(即存在较少的观察值),其中缺失值已被估算,例如......

# Dataframe with imputed values
data_imputed <- tribble(
  ~ID, ~Excluded, ~colA, ~colB, ~colC, ~col_mean, ~varA, ~varB,
  "B", FALSE,     2,     2,     2,     2,         "Y",   20,
  "C", FALSE,     3,     3,     3,     3,         "Z",   30
)
Run Code Online (Sandbox Code Playgroud)

当特定列(例如col_mean)缺少值时,如何用估算数据框中的值替换原始数据框中的值?

注意:我不想用估算数据帧中的行替换整行,而只是替换一组指定的列(例如,在本例中,以“col”开头的列)。

目标数据框看起来像这样......

# Target dataframe
data <- tribble(
  ~ID, ~Excluded, ~colA, ~colB, ~colC, ~col_mean, ~varA, ~varB,
  "A", TRUE,      1,     1,     1,     1,         "X",   10,
  "B", FALSE,     2,     2,     2,     2,         "Y",   20,
  "C", FALSE,     3,     3,     3,     3,         "Z",   30
)
Run Code Online (Sandbox Code Playgroud)

我试图用这个图总结问题......

在此输入图像描述

我需要对四组或五组列执行此操作,因此我可以指定条件(例如is.na(col_mean))和要使用的列(使用正则表达式)会使事情变得更容易。

我倾向于使用 tidyverse,因此首选使用 tidyverse 语法的代码。

Dar*_*sai 5

你可以使用rows_来自 的家庭dplyr。在这种情况下,rows_patch()效果很好。它通过一些关键列(即ID)修改现有行,但仅覆盖NA值。

\n
library(dplyr)\n\nrows_patch(data, data_imputed, by = "ID")\n\n# # A tibble: 3 \xc3\x97 8\n#   ID    Excluded  colA  colB  colC col_mean varA   varB\n#   <chr> <lgl>    <dbl> <dbl> <dbl>    <dbl> <chr> <dbl>\n# 1 A     TRUE         1     1     1        1 X        10\n# 2 B     FALSE        2     2     2        2 Y        20\n# 3 C     FALSE        3     3     3        3 Z        30\n
Run Code Online (Sandbox Code Playgroud)\n

  • 哇,我在 dplyr 动词方面真的落后了……很好。 (2认同)