我想使用dplyr在该个人的特定时间点将每个ID的DV列中的NA值替换为DV值:
我想将每个ID的时间2的NA(DV列)替换为该特定ID的时间4的DV值。
我想将每个ID的时间4的NA(DV列)替换为该特定ID的时间0的DV值。
我不知道如何使用dplyr。
这是我的数据集:
ID TIME DV
1 0 5
1 2 NA
1 4 4
2 0 3
2 2 3
2 4 NA
3 0 7
3 2 NA
3 4 9
预期产量:
ID TIME DV
1 0 5
1 2 4
1 4 4
2 0 3
2 2 3
2 4 3
3 0 7
3 2 9
3 4 9
任何建议表示赞赏。
最好,
最佳答案
按“ ID”分组后,我们可以使用fill
library(dplyr)
library(tidyr)
df1 %>%
arrange(ID, TIME) %>%
# or as @r2evans mentioned
#arrange(ID, factor(TIME, levels = c(0, 2, 4))) %>%
group_by(ID) %>%
fill(DV, .direction = 'downup')
# A tibble: 9 x 3
# Groups: ID [3]
# ID TIME DV
# <int> <int> <int>
#1 1 0 5
#2 1 2 4
#3 1 4 4
#4 2 0 3
#5 2 2 3
#6 2 4 3
#7 3 0 7
#8 3 2 9
#9 3 4 9
数据
df1 <- structure(list(ID = c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L), TIME = c(0L,
2L, 4L, 0L, 2L, 4L, 0L, 2L, 4L), DV = c(5L, NA, 4L, 3L, 3L, NA,
7L, NA, 9L)), class = "data.frame", row.names = c(NA, -9L))
关于r - Ifelse与Dplyr在R中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61736524/