#r
#r
Вопрос:
У меня есть следующие данные, и мне нужно получить таблицу соответствия, группирующую каждую переменную по четырем классам или интервалам
data2 <- data.frame(heigth = c(1.25, 1.28, 1.27, 1.21, 1.22, 1.29, 1.30,
1.24, 1.27, 1.29, 1.23, 1.26, 1.30, 1.21,
1.28, 1.30, 1.22, 1.25, 1.20, 1.28, 1.21,
1.29, 1.26, 1.22, 1.28, 1.27, 1.26, 1.23,
1.22, 1.21),
weigth = c(32, 33, 31, 34, 32, 31, 34, 32, 32, 35,
31, 35, 34, 33, 33, 31, 35, 32, 31, 33,
33, 32, 34, 34, 35, 31, 34, 33, 35, 34 ))
mytable <- with(datos2, table(estatura,peso))
peso
estatura 31 32 33 34 35
1.2 1 0 0 0 0
1.21 0 0 2 2 0
1.22 0 1 0 1 2
1.23 1 0 1 0 0
1.24 0 1 0 0 0
1.25 0 2 0 0 0
1.26 0 0 0 2 1
1.27 2 1 0 0 0
1.28 0 0 3 0 1
1.29 1 1 0 0 1
1.3 1 0 0 2 0
У меня есть таблица соответствия, но мне нужно, чтобы она группировала каждую переменную по четырем классам
Комментарии:
1. Каков ожидаемый результат?
2. Вы можете использовать
cut()
. Однако, как определяются группы?
Ответ №1:
Что-то подобное может быть? Я использую package data.table и использую квантиль с первого по четвертый для задания категорий.
library(data.table)
setDT(data2)
table(data2[,.(cut(heigth,quantile(heigth)),cut(weigth,quantile(weigth)))])
# V2
# V1 (31,32] (32,33] (33,34] (34,35]
# (1.2,1.22] 1 2 3 2
# (1.22,1.26] 3 1 2 1
# (1.26,1.28] 1 3 0 1
# (1.28,1.3] 1 0 2 1
Комментарии:
1. Требуется только 24 данных, а не 30 данных
Ответ №2:
Это ответ:
library(dvmisc)
table(data2[,.(quant_groups(height, 4),(quant_groups(weight, 4)))])
V2
V1 [31,32] (32,33] (33,34] (34,35]
[1.21,1.24] 3 3 2 1
(1.24,1.27] 5 1 2 1
(1.27,1.29] 4 2 1 2
(1.29,1.3] 0 0 2 1