Преобразовать значения столбца DF в матрицу в R - PullRequest
0 голосов
/ 07 июня 2018

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

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

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

Как добавить количество уникальных значений по группам в R data.frame

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

My df имеет более 50 000 строк и выглядит следующим образом:

dat <- data.frame(Date = c('06/08/2018','06/08/2018','07/08/2018','07/08/2018','08/08/2018','09/08/2018','09/08/2018','11/08/2018','11/08/2018','13/08/2018'),
                  Type= c('A','B','C','A','B','A','A','B','C','C'))

Я хочу, чтобы в моей результирующей матрице было "A", "B "," C "как новые столбцы," Date "как строки и значения в матрице как уникальный счет, показанный на изображении ниже:

Resultant Matrix

Также было бы здорово, если бы мы не жестко кодировали категориальные значения.Таким образом, в будущем, если вместо 3 он станет 4, код автоматически его обработает.

Ответы [ 3 ]

0 голосов
/ 07 июня 2018

Как насчет использования table ...

mat <- table(dat$Date, dat$Type)

mat

             A B C
  06/08/2018 1 1 0
  07/08/2018 1 0 1
  08/08/2018 0 1 0
  09/08/2018 2 0 0
  11/08/2018 0 1 1
  13/08/2018 0 0 1
0 голосов
/ 07 июня 2018

Используется spread

library(tidyverse)

spread_data <- (data, key = type, value = 2)
0 голосов
/ 07 июня 2018

То, что вы ищете, это dcast():

dcast(dat, Date ~ Type, fun.aggregate = length, value.var = "Type")

Эта функция быстро агрегирует ваши данные на основе аргумента fun.aggregate (в вашем случае length().

...