根据另一个中的值向下填充列
Fill down column based on values in another
我有一个 df:
ID Tag
999 YES
999
100
100 NO
500
我需要将 'Tag' 值填充到匹配的 ID 变量中 - 这样该 ID 的每个实例都有一个匹配的标签所以我最终会得到:
ID Tag
999 YES
999 YES
100 NO
100 NO
500
您可以使用 ave
来 填充 na
每组 。
df$Tag <- with(df, ave(Tag, ID, FUN=function(x) {
i <- is.na(x)
x[i] <- x[!i][1]
x
}))
df
# ID Tag
#1 999 YES
#2 999 YES
#3 100 NO
#4 100 NO
#5 500 <NA>
或使用fill
library(dplyr)
library(tidyr)
df %>% group_by(ID) %>% fill(Tag, .direction = "downup")
## A tibble: 5 x 2
## Groups: ID [3]
# ID Tag
# <int> <fct>
#1 999 YES
#2 999 YES
#3 100 NO
#4 100 NO
#5 500 NA
我有一个 df:
ID Tag
999 YES
999
100
100 NO
500
我需要将 'Tag' 值填充到匹配的 ID 变量中 - 这样该 ID 的每个实例都有一个匹配的标签所以我最终会得到:
ID Tag
999 YES
999 YES
100 NO
100 NO
500
您可以使用 ave
来 填充 na
每组 。
df$Tag <- with(df, ave(Tag, ID, FUN=function(x) {
i <- is.na(x)
x[i] <- x[!i][1]
x
}))
df
# ID Tag
#1 999 YES
#2 999 YES
#3 100 NO
#4 100 NO
#5 500 <NA>
或使用fill
library(dplyr)
library(tidyr)
df %>% group_by(ID) %>% fill(Tag, .direction = "downup")
## A tibble: 5 x 2
## Groups: ID [3]
# ID Tag
# <int> <fct>
#1 999 YES
#2 999 YES
#3 100 NO
#4 100 NO
#5 500 NA