如何在循环中正确解析expss中的(?)mdset?

康拉德

我是R的新手,我还不了解所有基本概念。任务是产生一个包含多个响应集的合并表。我正在尝试使用expss和循环来做到这一点

这是R中没有循环的代码(工作正常):

#libraries
#blah, blah...

#path
df.path = "C:/dataset.sav"

#dataset load
df = read_sav(df.path)

#table
table_undropped1 = df %>%
  tab_cells(mdset(q20s1i1 %to% q20s1i8)) %>%
  tab_total_row_position("none") %>%
  tab_stat_cpct() %>%
  tab_pivot()

有10个多个响应集,因此我需要以上述方式创建10个表。然后我转置这些表并合并。为了简化代码(并学习新知识),我决定使用循环生成表。但是,没有任何效果。我一直在寻找解决方案,我认为最接近正确的解决方案是:

#this generates a message: '1' not found
for(i in 1:10) {
  assign(paste0("table_undropped",i),1) = df %>%
    tab_cells(mdset(assign(paste0("q20s",i,"i1"),1) %to% assign(paste0("q20s",i,"i8"),1)))
    tab_total_row_position("none") %>%
    tab_stat_cpct() %>%
    tab_pivot()
}

仍然会导致代码上面描述的错误。

或者,将为此使用一个SPSS宏(仅发布是为了更好地表达问题,因为我必须避免使用SPSS):

define macro1 (x = !tokens (1)
/y = !tokens (1))

!do !i = !x !to !y.

mrsets
/mdgroup name = !concat($SET_,!i)
variables = !concat("q20s",!i,"i1") to !concat("q20s",!i,"i8")
value = 1.

ctables
/table !concat($SET_,!i) [colpct.responses.count pct40.0].

!doend
!enddefine.

*** MACRO CALL.
macro1 x = 1 y = 10.

换句话说,我正在寻找!concat()R中的有效替代品

格雷戈里·德明

%to%不适合参数变量选择。有一组用于参数变量选择和分配的特殊功能。其中之一是mdset_t

for(i in 1:10) {
    table_name = paste0("table_undropped",i) 
    ..$table_name = df %>%
        tab_cells(mdset_t("q20s{i}i{1:8}")) %>% # expressions in the curly brackets will be evaluated and substituted 
        tab_total_row_position("none") %>%
        tab_stat_cpct() %>%
        tab_pivot()
}

但是,在全局环境中将所有表存储为单独的变量不是一个好习惯。更好的方法是将所有表保存在列表中:

all_tables = lapply(1:10, function(i)
                    df %>%
                        tab_cells(mdset_t("q20s{i}i{1:8}")) %>% 
                        tab_total_row_position("none") %>%
                        tab_stat_cpct() %>%
                        tab_pivot()
                    )

更新。一般来说,没有必要合并。您可以使用以下工具完成所有工作tab_*

my_big_table = df %>%
    tab_total_row_position("none")

for(i in 1:10) {
    my_big_table = my_big_table %>%
        tab_cells(mdset_t("q20s{i}i{1:8}")) %>% # expressions in the curly brackets will be evaluated and substituted 
        tab_stat_cpct() 
}

my_big_table = my_big_table %>%
    tab_pivot(stat_position = "inside_columns") # here we say that we need combine subtables horizontally

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在for循环中正确调用递归函数?

PHP:如何在循环中正确评估嵌套变量?

如何在 Jenkinsfile 的 for 循环中正确使用变量

如何在while循环中正确设置增量?

如何在do / while循环中正确使用函数?

如何在python的for循环中正确创建矩阵?

如何在 FOR 循环中正确使用连接和事务?

如何在for循环中正确使用struct?

如何在python的for循环中正确编写CSV文件?

如何在 for 循环中正确使用 i?

我如何在打字稿中的嵌套for ... in循环中正确键入索引签名?

如何在 C 中的循环中正确使用 scanf 与数组?

如何在JavaScript中的while和for循环中正确嵌套

如何在 for 循环中正确打开和关闭事件循环?

如何在角度2中正确使用forEach循环?

如何在一行命令中正确处理 FOR 循环中的重定向?

如何在具有延迟的循环中正确使用 scrollTop()?

如何在循环中正确添加“选中”到单选按钮组?

如何在C ++中正确在循环中使用互斥锁?

如何在循环中正确调用方法以使用UnfoldingMap显示数据

复选框,表单提交以及如何在循环中正确使用array_fill?

如何在R的For循环中正确使用group_by()和summarise()

如何在Common Lisp循环中正确编写此条件?

易68k。如何在循环中正确使用索引?

如何在两个嵌套的 while 循环中正确初始化/重置变量

SQL,如何在while循环中正确求和并按周数将其写入表

如何使用useState在React功能组件中的循环中正确设置状态

如何在 def 中正确使用 for 循环?

如何在Laravel中正确解析网址?