提问人:zkMO 提问时间:10/24/2023 最后编辑:zkMO 更新时间:10/28/2023 访问量:51
如果 varA==NA,如何将 NA 逐行插补给名称以 varA 开头的所有变量?
If varA==NA, how do I impute NA row-wise to all variables whose names start with varA?
问:
我正在尝试修改一些“选中所有适用”问题的合格样本量,方法是将所有 重新编码为 如果没有选择任何选项。我创建了一个字符向量,它通过折叠每个字段的根或前缀来包含所有“检查所有适用”字段 ()。然后,我计算了每个字段的逐行总和 - 如果至少选择了一个响应。最后,我将这些变量重新编码为,如果总和是......0
df
NA
check_all
>0
NA
0
df_test <- check_all %>% # character vector in which every element is a prefix of 2+ variables in df
map_dfc(~ df %>% select(contains(.x)) %>% reduce(~ ..1 + ..2)) %>% # select vars in df and sum based on partial matching of elements in 'check_all'
set_names(., check_all) %>% # rename based on character vector
mutate(across(everything(), ~ na_if(.,0))) %>% # recode 0 to NA
但现在我不知道如何有条件地选择所有匹配的变量 in 并重新编码为如果它的前缀对应物 (in ) 是 .df
NA
df_test
NA
其结构为:df_test
> dput(head(df_test))
structure(list(varA = c(NA, 3, 5, NA, 7, NA), varB = c(NA,
NA, NA, NA, 1, NA), varC = c(NA, 1, 2, NA, 5,
NA), varD = c(NA, 1, NA, NA, NA, NA), varE = c(NA,
1, NA, NA, 1, NA), varF = c(NA, 1, 1, NA, 1, NA), varG = c(NA,
1, 1, NA, NA, NA), varH = c(NA, 1, 1, NA, 1, NA), row.names = c(NA, -6L), class = c("tbl_df", "tbl", "data.frame"))
一个看起来像什么的例子是:df
> dput(head(df))
structure(list(varA___1=c(0,3,5,0,7,0),
varB___1=c(0,0,0,0,1,0), varC___1=c(0,1,2,0,5,0),
varD___1=c(0,1,0,0,0,0), varE___1=c(0,1,0,0,1,0),
varF___1=c(0,1,1,0,1,0), varG___1=c(0,1,1,0,0,0),
varH___1=c(0,1,1,0,1,0), row.names = c(NA, -6L), class = c("tbl_df", "tbl", "data.frame"))
前缀在哪里;中发现的所有变体都可以通过在前缀后加上”varA:varH
df
___[0-9]
"
我真的不想根据 ,一个接一个地经历并有条件地子集它,但我知道我可以这样做。有没有更程序化的方法?df
check_all
答: 暂无答案
评论