У меня есть таблица в 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", не "Возраст" - я не определил общее имя для своих столбцов и строк.
Я отмечаю, что this answer делает что-то подобное, но не уверен, как применить его, учитывая, что у меня нет имени для моих столбцов, например. «mpg» (в случае ссылки).
Любые идеи?
Я думаю, вы можете преобразовать широкий формат длинного формата (возможно, 'as.data.frame', если это объект таблицы или« расплавить », если он является матрицей) и использовать' cut' для создания столбца группировки на основе столбца в длинном формате, получить подсчет на основе этого и переформатируйте его обратно в широкий формат с помощью 'dcast' из' reshape2'. BTW, у вас есть объект 'table' или' matrix' – akrun
У меня есть объект 'table', поскольку вывод' str (tbl) 'is:" 'table' int [1: 7, 1:42] "и т. Д. –
В любом случае, у вас есть решение, размещенное ниже, которое, как я думаю, должно работать. Если не преобразовать его в 'mat <- as.matrix (tbl)', а затем попробуйте. – akrun