根据名称用另一行的条目填充数字的值
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")
美好的一天, 我有一个看起来像这样的数据框;
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")