我有一个包含主题 ID 和两个变量列的数据框。我的 subjectid 从 100 到 1000,一些主题 ID 缺少 var1 列中的值,我想将它们添加回列中。 var1 列的值包括 a、b、c、d、e 和 f。
subject var1 var2
subj100 a FALSE
subj100 b FALSE
subj100 c FALSE
subj100 d FALSE
subj200 a FALSE
subj200 b FALSE
subj200 c FALSE
subj200 d FALSE
subj200 e FALSE
subj200 f FALSE
subj300 c FALSE
subj300 d FALSE
subj300 e FALSE
所需输出:
subject var1 var2
subj100 a FALSE
subj100 b FALSE
subj100 c FALSE
subj100 d FALSE
subj100 e FALSE
subj100 f FALSE
subj200 a FALSE
subj200 b FALSE
subj200 c FALSE
subj200 d FALSE
subj200 e FALSE
subj200 f FALSE
subj300 a FALSE
subj300 b FALSE
subj300 c FALSE
subj300 d FALSE
subj300 e FALSE
subj300 f FALSE
我尝试:
var1_content <- c('a','b','c','d','e','f')
df <- data.frame(subject= c('subj100','subj100','subj100','subj100','subj200','subj200',
'subj200','subj200','subj200','subj200','subj300','subj300','subj300'),
var1 = c( 'a','b','c','d','a','b','c','d','e','f','c','d','e'),
var2 = c( 'FALSE','FALSE','FALSE','FALSE','FALSE','FALSE','FALSE',
'FALSE','FALSE','FALSE','FALSE','FALSE','FALSE'))
df %>%
group_by(subject) %>%
mutate(var1 = ifelse(all(var1 %in% var1_content), var1, var1_content))
但这不是我所期望的像上面期望的输出。请指教,谢谢。
你可以这样做:
library(tidyverse)
df %>%
group_by(subject) %>%
complete(var1 = !!var1_content, fill = list(var2 = FALSE)) %>%
ungroup()