У меня большой фрейм данных, и я хочу создать из него еще один фрейм данных, который позволит мне проверять корреляцию переменной ("rate") с переменной "out" для каждой возможной комбинации уникальных значений, которые есть в других столбцах,Да, данные будут также подмножеством для комбинации.Например:
> data = data.frame(a=c(1,1,1,2,2,3),
b=c("apples", "oranges", "apples", "apples", "apples", "grapefruit"),
c=c(12, 22, 22, 45, 67, 28),
d=c("Monday", "Monday", "Monday", "Tuesday", "Wednesday", "Tuesday"),
out = c(12, 14, 16, 18, 20, 22),
rate = c(0.01, 0.02, 0.03, 0.04, 0.07, 0.06))
Я хочу проверить соотношение скорости без для каждой комбинации фрейма данных.то есть вывод должен быть как
> datacorr
comb correlation
1, apples xxx
1, apples, 12 xxx
1, apples, 12, Monday xxx
1,2,3, apples xxx
Monday, Tuesday, apples xxx
Я пытаюсь создать фрейм данных со всеми уникальными значениями как:
dim.data <- do.call(expand.grid,lapply(data,unique))
и пытаюсь перейти отсюда.
Друг сделал это для одного столбца:
z <- (data %>% select(c) %>% distinct())$c
kp <- function(gg, r)
{
corr1 <- data.frame(x = character(), corr = numeric())
p <- unlist(lapply(1:r, function(y) {combn(gg, y, FUN = paste, collapse = ", ")}))
dat <- lapply(1:length(p), function(y){
k <- as.integer(strsplit(p[y], ",")[[1]])
corr <- (data %>% filter(a %in% k) %>% select(out, rate) %>% cor %>% as.data.frame())$rate[1]
corr1 <- add_row(corr1, x= p[y], corr=corr)
})
final <- do.call(rbind, dat)
return(final)
}
Однако это не работает в Windows, но отлично работает на Mac.Может кто-нибудь также помочь мне отредактировать его для запуска для Windows?Я пытался, но безуспешно.