根据名称用另一行的条目填充数字的值

Fill value of a numeric with the entry of another row based on name

美好的一天, 我有一个看起来像这样的数据框;

  Community Value   Num
  <chr>     <dbl> <dbl>
1 A          3.54     3
2 A          4.56     3
3 A          2.22     3
4 B          0       NA
5 B          0.76    NA
6 C          1.2      5

我希望在保持名称不变的情况下,用社区 A 的 Num 观察来填充社区 B 的 Num 观察。

如果这就是您需要做的全部,您可以尝试使用 if_else() 语句。如果你的大问题更复杂,你可能需要采取另一种方法。

library(dplyr)

df %>% 
  mutate(Num = if_else(Community == "B", Num[Community == "A"][1], Num))

#   Community Value Num
# 1         A  3.54   3
# 2         A  4.56   3
# 3         A  2.22   3
# 4         B  0.00   3
# 5         B  0.76   3
# 6         C  1.20   5

数据:

df <- read.table(textConnection("Community Value   Num
A          3.54     3
A          4.56     3
A          2.22     3
B          0       NA
B          0.76    NA
C          1.2      5"), header = TRUE)

如果 NA 值总是紧接在您要替换它们的正值下方,您可以使用 fill:

library(tidyr)
df %>%
  fill(Num, .direction = "down")