tidyverse 解决方案,用于将几列重新编码为新列,其中列名后缀增加一

问题描述

这只是伪代码,但假设我有 22 列,名称从 Q46x47_1 到 Q46x47_22。

我现在想应用以下重新编码逻辑:

if Q46x47_1=0 Q46x47_2=0. 
if Q46x47_3=0 Q46x47_4=0. 
if Q46x47_5=0 Q46x47_6=0. 
if Q46x47_7=0 Q46x47_8=0. 
if Q46x47_9=0 Q46x47_10=0. 
if Q46x47_11=0 Q46x47_12=0. 
if Q46x47_13=0 Q46x47_14=0. 
if Q46x47_15=0 Q46x47_16=0. 
if Q46x47_17=0 Q46x47_18=0. 
if Q46x47_19=0 Q46x47_20=0. 
if Q46x47_21=0 Q46x47_22=0.

当然,我不想手动输入。所以我想知道是否有一种优雅的方式来批量重新编码。我知道 across,但我不知道如何通过增加的后缀数传递每个第二个变量。

所以我开始:

df %>%
  mutate(across(num_range(prefix = "Q46x47_",range = seq(1,21,2)),~if_else(. == 0,...,.)))

我的问题是(假设在这里可以使用 if_else)如何在 if_else 命令中指定 ... 部分,我需要在其中传递 LHS 列名称。

有什么想法吗?


带有列子集的可重现的简短示例:

df <- data.frame(Q46x47_1 = c(1,2,1,0),Q46x47_2 = c(1,3,Q46x47_3 = c(1,Q46x47_4 = c(1,Q46x47_5 = c(1,Q46x47_6 = c(1,0))

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)