如何在 R 中具有相同 ID 的情况下重复不同变量的值

How to repeat values for different variables in cases with the same ID in R

我想在空格中重复这些变量的信息 NA 并且它们具有相同的ID。这是对实际结构数据的展望。 (标识符在列 id1 到 id4 中):

id1<-rep(3,8)
id2<-c(rep(1,3),rep(2,4),3)
id3<-rep(1,8)
id4<-c(rep(1,3),rep(2,4),3)
v1<-c(1,NA,NA,1,NA,NA,NA,2)
v2<-c(3,NA,NA,5,NA,NA,NA,1)
v3<-c(4,3,4,5,4,2,1,1)
v4<-c(4,8,2,5,4,3,1,1)
data.frame(id1,id2,id3,id4,v1,v2,v3,v4)

这是可视化:

> data.frame(id1,id2,id3,id4,v1,v2,v3,v4)
  id1 id2 id3 id4 v1 v2 v3 v4
1   3   1   1   1  1  3  4  4
2   3   1   1   1 NA NA  3  8
3   3   1   1   1 NA NA  4  2
4   3   2   1   2  1  5  5  5
5   3   2   1   2 NA NA  4  4
6   3   2   1   2 NA NA  2  3
7   3   2   1   2 NA NA  1  1
8   3   3   1   3  2  1  1  1

如何通过 ID 在每个案例的第一行中用信息填充 NA 值?

也许这有帮助

library(dplyr)
df1 %>%
   group_by(across(starts_with('id'))) %>% 
   mutate(across(everything(), ~ replace(., is.na(.), first(.)))) %>%
   ungroup

或使用fill

library(tidyr)
df1 %>%
  group_by(across(starts_with('id'))) %>% 
  fill(everything())