Ваши задачи кажутся двоякими: одна связана с подмножеством, а другая - с тем, как запускать корреляционные тесты для групп столбцов в одном go. Итак, этот ответ состоит из двух частей.
Часть 1 :
Применение логики c, упомянутой в моем комментарии, - это различие между непрерывным и категориальным переменные могут быть созданы, если предположить, что первые имеют гораздо больше, а вторые - гораздо меньше различных значений, и, следовательно, можно определить пороговое значение, чтобы различать guish их - вы могли бы поступить так:
Данные:
df <- data.frame(
v1 = sample(1:2, 100, replace = T),
v2 = sample(1:3, 100, replace = T),
v3 = sample(1:30, 100, replace = T),
v4 = sample(1:50, 100, replace = T),
v5 = sample(1:40, 100, replace = T),
v6 = sample(1:60, 100, replace = T)
)
Предполагая, что 10
является разумным пороговым значением, для подмножества фрейма данных в тех (предположительно непрерывных) столбцах, которые имеют более 10 unique
значений, вы можете использовать sapply
таким образом:
df_cont <- df[, sapply(df, function(x) length(unique(x)) > 10)]
Для проверки запустите head
:
head(df_cont)
v3 v4 v5 v6
1 8 40 40 22
2 29 1 6 22
3 19 39 37 18
4 16 37 24 5
5 13 32 16 22
6 27 25 18 11
Часть 2:
Сначала сделайте манекен фрейм данных со всеми возможными комбинациями столбцов, используя expand.grid
:
combinations <- expand.grid(colnames(df), colnames(df))
Затем apply
cor.test
для всех комбинаций:
apply(combinations, 1, function(i){
x <- df_cont[,i[[1]]]
y <- df_cont[,i[[2]]]
cor.test(x, y, method = "kendall")
})