假设我有一个像这样的示例数据框。
sample_df <- data.frame(replicate(100,sample(0:1,1000,rep=TRUE)))
您可能会问的一件事是数据框中的哪些列与 X1 列最相关。 我知道如何做到这一点,使用下面的代码,它显示前 5 个相关性。
library(lares)
corr_var(sample_df,
X1,
top = 5
)
但是,我不想只关注 X1,而是想知道哪些列与X1 和 X2 最相关。我怎么能做到这一点?
set.seed(42)
data <- data.frame(replicate(100,sample(0:1,1000,rep=TRUE)))
r2_var <- function(data, ...) {
x <- rlang::ensyms(...) |> as.character()
y <- data |> names() |> setdiff(x)
purrr::map_dfr(y, ~ {
f <- sprintf("%s ~ %s", .x, paste(x, collapse = " + "))
r2 <- summary(lm(f, data))$r.squared
dplyr::tibble(var = .x, r2 = r2)
}) |>
dplyr::arrange(dplyr::desc(r2))
}
r2_var(data, X1, X2)
#> # A tibble: 98 × 2
#> var r2
#> <chr> <dbl>
#> 1 X28 0.00888
#> 2 X76 0.00810
#> 3 X42 0.00761
#> 4 X31 0.00741
#> 5 X39 0.00737
#> 6 X13 0.00678
#> 7 X88 0.00674
#> 8 X63 0.00600
#> 9 X81 0.00508
#> 10 X41 0.00470
#> # ℹ 88 more rows