ошибка при создании фиктивных переменных для каждой непрерывной переменной в кадре данных - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть набор данных, который имеет 10 столбцов, и это непрерывные данные. Образец того же самого собирается через dput () и показан ниже:

structure(list(x1 = c(12.800454545, 17.71, 5.805, 13.111875, 14.121428571, 12.800454545, 17.71, 5.805, 13.111875, 14.121428571), 
x2 = c(281.61, 230.23, 11.61, 209.79, 296.55, 281.61, 230.23, 11.61, 209.79, 296.55), 
x3 = c(19.41, 13.91, 0, 2.37, 23.49, 19.41, 13.91, 0, 2.37, 23.49), 
x4 = c(65L, 62L, 3L, 41L, 45L, 65L, 62L, 3L, 41L, 45L), 
x5 = c(0.571428571, 1.857142857, 21.14285714, 2.571428571, 1.428571429, 0.571428571, 1.857142857, 21.14285714, 2.571428571, 1.428571429), 
x6 = c(52L, 40L, 3L, 22L, 33L, 52L, 40L, 3L, 22L, 33L), 
x7 = c(44.53, 15.38, 5.97, 4.97, 13.94, 44.53, 15.38, 5.97, 4.97, 13.94), 
x8 = c(65L, 53L, 3L, 41L, 45L, 65L, 53L, 3L, 41L, 45L), 
x9 = c(6L, 4L, 1L, 1L, 1L, 6L, 4L, 1L, 1L, 1L), 
x10 = c(46.43, 17.52, 0, 11.73, 0, 46.43, 17.52, 0, 11.73, 0)), 
row.names = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L), class = "data.frame")

Я хочу написать автоматическую функцию, которая бы разбивала каждую переменную на 5 групп, используя квантили, создавая макеты и добавляя их в набор данных в виде столбцов.

Я пытался сделать что-то подобное, но не смог сделать это:

create a copy of dataframe to work on dummy vars creations
d1 <- df

library(dplyr)
library(Hmisc)
for (i in 1:length(d1)){
  #print(table(cut2(d1[,i], g=5)))
  aa <- NULL
  bb <- NULL

  x1 <- select(d1, i)
  aa <- cut2(x1, g=5)

  # Create dummy variables
  bb <- model.matrix(~ aa + 0, data=df)
  colnames(bb) <- gsub("aa","",colnames(bb))     #clean column names
  bb <- as.data.frame(bb)   # convert matrix to dataframe


}

1 Ответ

0 голосов
/ 05 ноября 2018

Если под фиктивной вы подразумеваете квантильный ранг вашего наблюдения, решение может быть:

for (i in 1:length(df)){
                        d1[,i] <- as.integer(cut2(df[,i], g=5)) 
}
...