Дискретные контейнеры с использованием cut () - PullRequest
0 голосов
/ 17 мая 2019

Я хочу отобразить данные [используя решетку xyplot ()] в моем dataframe age.model, основываясь на дискретных ячейках столбца StartAge.

Я использую следующий код:

# set up boundaries for intervals/bins
breaks <- c(0,3,4,5,6,8,13,15,17,18,19,20,22)
# specify interval/bin labels
labels <- c("<3", "3-4)", "4-5)","5-6)", "6-8)","8-13)", "13-15)","15-17)","17-18)","18-19)","19-20)",">=20")
# bucketing data points into bins
bins <- cut(age.model$StartAge, breaks, include.lowest = T, right=FALSE, labels=labels)
# inspect bins
summary(bins)

В первом аргументе cut () я указал столбец, по которому я хочу дискретизировать.Однако возвращаемый коэффициент не включает весь DF.Как я могу это сделать?

Воспроизводится с использованием dput:

structure(list(Height = c(0.207224416925809, -1.19429150954007, 
0.0247585682642494, 0.023546515879641, 1.51423735121426, -1.09376538778425, 
-0.125209484617016, -0.63639210765747, 0.305071992864995, -0.422021082477656
), Weight = c(-0.366133564723644, -1.06969961340686, -0.0793604259237282, 
-0.708230200986797, 1.71593234004357, -0.685215310472794, -1.20353653394014, 
-0.490399232488568, 0.742874184424376, -0.331519044995803), Training = c(19, 
27, 27, 24, 35, 23, 15, 14, 47, 7), StartAge = c(13, 19, 20, 
20, 14, 2, 8, 4, 17, 18)), row.names = c("1", "2", "3", "4", 
"5", "6", "7", "8", "9", "10"), class = "data.frame")

Ответы [ 2 ]

1 голос
/ 17 мая 2019

Если вы используете xyplot - , изучите ваших данных, рассмотрите возможность использования equal.count() или shingle() в вашем коде. Получая удовольствие (не догадываясь) о ваших данных, приблизительная линейная зависимость между весом и ростом, похоже, не подходит для нижних бункеров StartAge, как показано в первом примере.

# Starting with data in age.model
  library(lattice)
  xyplot(Weight ~ Height | equal.count(StartAge), age.model, type = c("p", "r"))

Количество ячеек по умолчанию для equal.count равно 6. Его можно легко изменить, чтобы изучить другие группировки:

# Create four groups of equal counts to explore
  xyplot(Weight ~ Height | equal.count(StartAge, 4), age.model, type = c("p", "r"))

Функция shingle() позволяет перекрывать лотки, как показано здесь.

# Create three groups that overlapping with each other 
  bins <- cbind(lower = c(0,8,16), upper = c(13,18,24))
  xyplot(Weight ~ Height | shingle(StartAge, bins), age.model, type = c("p", "r"))
0 голосов
/ 17 мая 2019

Чтобы добавить ячейки к фрейму данных, просто измените его в новом столбце:

age.model$bins <- bins
...