【发布时间】:2021-06-20 08:08:36
【问题描述】:
我希望在同一个数据集中运行几十个交叉表,并设置一个结果变量。我有一个函数可以提供我想要的交叉表:
second_table = function(dat, variable1, variable2){
dat %>%
tabyl({{variable1}}, {{variable2}}, show_na = FALSE) %>%
adorn_percentages("row") %>%
adorn_pct_formatting(digits = 1) %>%
adorn_ns()
}
以 mtcars 数据集为例,该函数为我提供了我想要的单个变量:
cars = datasets::mtcars
second_table(cars, cyl, vs)
不过,我真正想要的是创建许多这样的表,其中 dat = cars 和 variable2 = vs 参数保持不变,但使用几个不同的列作为 variable1 参数。出于本示例的目的,假设它是以下 4 个变量:
variables = c("cyl", "am", "gear", "carb")
我不确定 purrr 包中的地图函数是否是执行此操作的最佳方法,但我一直在尝试使用地图和相关函数(如 map_at)进行各种不同的操作,但均未成功。 如果有办法用 purrr 做到这一点,那么这就是我更愿意做的事情,但我愿意接受任何建议。我真的不在乎输出是什么样子,我只需要无需多次复制和粘贴代码即可获得所需的所有交叉表。
非常感谢任何帮助!
【问题讨论】:
-
我猜这最多只能使用 3 个变量,即根据
?tabylSpecify a data.frame and the one, two, or three unquoted column names you want to tabulate. Three variables generates a list of 2-way tabyls, split by the third variable.。所以,如果你有超过 3 个,可以使用ftable即ftable(cars[variables]) -
接受的答案更多的是我正在寻找的,但我不知道 ftable 函数!
-
我不确定您是否需要单独或一起执行此操作