Объединение столбцов таблицы в зависимости от возраста
У меня есть таблица в R, которая выглядит следующим образом (ниже это просто пример):
| | 15 | 17 | 18 | 22 | 25 | 26 | 27 | 29 |
|-------|----|----|----|----|----|----|----|----|
| 10000 | 1 | 2 | 1 | 2 | 4 | 3 | 5 | 2 |
| 20000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 30000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 40000 | 0 | 0 | 0 | 1 | 2 | 3 | 6 | 3 |
| 50000 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
| 60000 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Строки - это уровни дохода, а столбцы - уровни возраста. По сути, я создаю эту таблицу, чтобы узнать, связан ли возраст с доходом с помощью критерия хи-квадрат. Числа в таблице являются числами случаев, например, в моем наборе данных 2 человека в возрасте 17 лет с доходом 10000.
И возраст, и уровень дохода типа "num" в R так непрерывны.
Я хочу по существу объединить столбцы по возрасту, чтобы получить таблицу со всеми, кто имеет доход в 10 тысяч, и в возрасте от 15 до 25 лет, в возрасте от 25 до 35 лет и т. Д., Поэтому я получаю гораздо меньше столбцов.
Обратите внимание, что colnames(tbl) = "15","17", "18", а не "Age" - я не определил всеобъемлющее имя для своих столбцов и строк.
Я отмечаю, что этот ответ делает нечто похожее, но не уверен, как его применить, поскольку у меня нет названия для моих столбцов, например, "mpg" (в случае ссылки).
Есть идеи?
1 ответ
Сделал мою собственную матрицу здесь, но должен работать на df's aswell.
mat <- matrix(sample(1:10,8500,replace = TRUE),ncol=85)
colnames(mat) <- 15:99
levs <- cut(as.numeric(colnames(mat)),seq(15,105,10),right = FALSE)
res <- sapply(as.character(unique(levs)),function(x)rowSums(mat[,levs==x]))
Редактировать: Если вы хотите использовать те же имена, что и в mat, но считать в соответствии с категорией, дополнительно выполните:
res <- res[,levs] # expands the res df to one category count col pr. original col in mat.
colnames(res) <- colnames(mat) # renames cols to reflect input matrix mat.