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

R:使用 %to% 的逻辑

如何解决R:使用 %to% 的逻辑

我注意到在 R 中使用 x1 %to% x8 的逻辑似乎不一致。有时使用物理上位于数据集中变量之间的所有变量(参见 SPSS),

d%>%tab_cols(total()) %>%
  tab_cells (mdset(Q20_01_more %to% Q20_03_more)) %>%
  tab_stat_cases(total_row_position = c("none"),label = 'N') %>%
  tab_stat_cpct(total_row_position = c("none"),label = '%') %>%
  tab_pivot (stat_position = "inside_rows") %>%  
  #drop_c ()  %>%
  recode(as.criterion(is.numeric) & is.na ~ 0,TRUE ~ copy)   %>%
  custom_format2()  %>%
  set_caption("test")

生成下面的表格,其中包含存储在数据框 'd' 中连续列中的 3 个变量

enter image description here

其他时候,R 似乎根据变量名称对所有变量进行排序,并评估排序中出现在两者之间的所有变量。

> names_totaln<-names(eval(substitute(Q20_01_more %to% Q20_03_more),d))
> names_totaln
[1] "Q20_01_more" "Q20_02"      "Q20_02_less" "Q20_02_more" "Q20_03"      "Q20_03_less"
[7] "Q20_03_more"

有什么正确使用的建议吗?

发送!

解决方法

这里的问题是,当你调用 eval 时,'%to%' 不知道变量的顺序,只使用字母顺序。 expss 包中有一组函数可以提供有关变量顺序的信息:compute、do_if、calc 和 tab_*。您可以通过在控制台中键入 ?compute 轻松获得有关它们的帮助。你用 calc 的最后一个表达式:

names_totaln<-names(eval(substitute(calc(d,Q20_01_more %to% Q20_03_more))))
names_totaln

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