如何在 R 中跨多个列分成 4 个相等的组
How to divide into 4 equal groups across multiple columns in R
我正在处理一个大型数据集,我希望重新编码大量变量,以便将它们分别分成 4 个大小相等的组。
我可以使用 sjmisc
库中的 split_var
函数对单个变量执行此操作,如下所示:
library(sjmisc)
mtcars %>% select(mpg, cyl, disp)
split_var(mtcars, mpg, n = 4)
它会根据旧值生成一个新类别,该类别表示特定行所在的组。但是,我找不到跨多个变量执行此操作的解决方案。如果我手动输入每个变量的列名,它会起作用,如下所示:
split_var(mtcars, mpg, cyl, disp, n = 4)
但是,由于我正在处理大型数据集,因此我需要找到一种无需手动输入每一行名称的方法。我尝试了相当于 split_var(mtcars, c("mpg", "cyl", "disp"), n = 4)
的方法,它会产生一个错误:
> split_var(mtcars, c("mpg", "cyl", "disp"), n = 4)
Error: Problem with `mutate()` input `..1`.
ℹ `..1 = c("mpg", "cyl", "disp")`.
ℹ `..1` must be size 32 or 1, not 3.
我想我可能需要 lapply,但我不知道如何在这种情况下使用它。感谢您的帮助!
split_var
使用 select_helpers
。所以你可以这样做:
mtcars %>%
split_var(everything(), n = 4)
mtcars %>%
split_var(all_of(c("mpg","cyl")), n = 4)
split_var
仅适用于数字变量,因为它使用分位数,因此您可以:
mtcars %>%
sjmisc::split_var(where(is.numeric), n = 4)
我正在处理一个大型数据集,我希望重新编码大量变量,以便将它们分别分成 4 个大小相等的组。
我可以使用 sjmisc
库中的 split_var
函数对单个变量执行此操作,如下所示:
library(sjmisc)
mtcars %>% select(mpg, cyl, disp)
split_var(mtcars, mpg, n = 4)
它会根据旧值生成一个新类别,该类别表示特定行所在的组。但是,我找不到跨多个变量执行此操作的解决方案。如果我手动输入每个变量的列名,它会起作用,如下所示:
split_var(mtcars, mpg, cyl, disp, n = 4)
但是,由于我正在处理大型数据集,因此我需要找到一种无需手动输入每一行名称的方法。我尝试了相当于 split_var(mtcars, c("mpg", "cyl", "disp"), n = 4)
的方法,它会产生一个错误:
> split_var(mtcars, c("mpg", "cyl", "disp"), n = 4)
Error: Problem with `mutate()` input `..1`.
ℹ `..1 = c("mpg", "cyl", "disp")`.
ℹ `..1` must be size 32 or 1, not 3.
我想我可能需要 lapply,但我不知道如何在这种情况下使用它。感谢您的帮助!
split_var
使用 select_helpers
。所以你可以这样做:
mtcars %>%
split_var(everything(), n = 4)
mtcars %>%
split_var(all_of(c("mpg","cyl")), n = 4)
split_var
仅适用于数字变量,因为它使用分位数,因此您可以:
mtcars %>%
sjmisc::split_var(where(is.numeric), n = 4)