如何在 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())
我想在空格中重复这些变量的信息 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())