【发布时间】:2026-01-20 13:00:01
【问题描述】:
我需要重新创建一个非常大的数据框(900 多个变量)的原始变量。 这是我正在尝试做的一个示例:
dat <- data.frame(
id=c('user1','user2','user3'),
agePanel1=c(20,25,32),
agePanel2=c(21,NA,33),
favColPanel1=c('blue','red','blue'),
favColPanel2=c('red',NA,'red')
)
id agePanel1 agePanel2 favColPanel1 favColPanel2
1 user1 20 21 blue red
2 user2 25 NA red NA
3 user3 32 33 blue red
对于每个变量,我需要创建一个新变量(下面的年龄和 favCol),当有面板数据时为 NA,否则为第一个面板观察值。在面板数据不完整的情况下,所有面板值都应设置为 NA。此示例的结果如下所示:
id age agePanel1 agePanel2 favCol favColPanel1 favColPanel2
1 user1 NA 20 21 NA blue red
2 user2 25 NA NA red NA NA
3 user3 NA 32 33 NA blue red
我开始尝试使用 dplyr 和 tidyr :
mutate(dat, age = ifelse(is.na(test$agePanel2),agePanel1,NA))
我正在努力寻找一种方法来执行循环或可以自动执行此过程的方法。
【问题讨论】:
-
我觉得你已经有了这个:
dat$age <- ifelse(is.na(dat$agePanel2),dat$agePanel1,NA)