Reshape2: dcast () возвращает - сумма не имеет значения для факторов - PullRequest
0 голосов
/ 27 июня 2018

набор данных: я назову это CAR

Car_Type | Cyl | Miles | State | Color | Tires

.....

Мои данные могут иметь NULL для Miles

Я пытаюсь запустить dcast() для набора данных, который показывает все переменные в числовом виде. sapply(CAR, mode)).

> sapply(CAR, mode)
> CAR     Cyl    Miles      State       Color     Tires
>    "numeric"     "numeric"     "numeric"     "numeric"     "numeric"     "numeric"

Когда я запускаю следующий код, я получаю 0 и 1 для значений и похоже, что он возвращает количество раз, которое Мили не NULL:

Pivot <- dcast(CAR, Car_Type ~ Cyl, value.var = "Miles")

Когда я пытаюсь выполнить следующее, чтобы получить сумму миль

Pivot <- dcast(CAR, Car_Type ~ Cyl, value.var = "Miles", fun.aggregate = sum)

Я получаю следующую ошибку:

«сумма» не имеет значения для факторов

Я пытался transform(CAR, Miles = as.numeric(Miles)), но получаю ту же ошибку.

Чего мне не хватает здесь, чтобы найти сумму миль при "повороте" Car_Type и Cyl и собрать сумму миль? Являются ли значения NULL причиной ошибки? Я думал, что NULL не является проблемой для dcast агрегатов.

1 Ответ

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

Я пообедал, подумал о нескольких вещах и понял это. Кажется, что моя переменная Miles была фактором, даже если sapply() возвращала "число". Я запустил следующее:

is.numeric(CAR$Miles)
[1] FALSE

Затем я преобразовал коэффициент в числовое значение, выполнив (подробнее об этом здесь: Изменение значений при преобразовании типа столбца в числовое значение :

CAR$Miles2 <- as.numeric(as.character(CAR$Miles))

После изменения коэффициента на числовое значение я смог успешно запустить свою строку:

Pivot <- dcast(CAR, Car_Type ~ Cyl, value.var = "Miles2", fun.aggregate = sum, na.rm=TRUE)
...