微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R:expss 包 - “重新编码”在没有 do_if 的情况下不起作用?

如何解决R:expss 包 - “重新编码”在没有 do_if 的情况下不起作用?

我正在尝试使用 expss 将重新编码为函数。当我复制 https://gdemin.github.io/expss/#example_of_data_processing_with_multiple-response_variables 中所示的示例时 我注意到以下行为: 包含 do_if 语句的代码完美运行:

w = w %>%  do_if(cell == 1,{recode(a1_1 %to% a1_6,other ~ copy) %into% (h1_1 %to% h1_6)})

没有 do_if 语句

w = w %>% recode(a1_1 %to% a1_6,other ~ copy) %into% (h1_1 %to% h1_6)

生成错误错误:'a1_1'未找到”。

这是正确的吗?

将变量标签转移到新创建的变量(参见 mutate)也很好

感谢您提供有关如何正确使用的建议。

解决方法

Inside do_if recode 在 data.frame 的上下文中进行评估。当没有上下文时,recode 将在全局环境中进行评估。它在 data.frame 中看不到 a1_1,... 变量。 好消息是有一个 compute 函数可用于对 data.frames 进行任意操作:

w = w %>%  
    compute({
         recode(a1_1 %to% a1_6,other ~ copy) %into% (h1_1 %to% h1_6)
    })

至于标签复制,您可以使用参数 'with_labels' = TRUE 或默认情况下具有 'with_labels' = TRUE 的别名 'rec':

w = w %>%  
    compute({
         rec(a1_1 %to% a1_6,other ~ copy) %into% (h1_1 %to% h1_6)
    })

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。