R SQLDF PIVOT для фрейма данных - PullRequest
0 голосов
/ 08 марта 2019

У меня есть data.frame с именем data6, на котором я хочу выполнить сводку. enter image description here я пробовал sqldf, но после тщательной проверки я так и не смог найти причину этой ошибки

"Ошибка в result_create (conn @ ptr, оператор): рядом" (": синтаксическая ошибка"

SQL заявление: «Выбрать * Из (Выбрать * Из данных6) PIVOT (сумма ([Кол-во]) ЗА [GRNUOM] в ([con2], [con3], [con4], [Con15], [ CON2], [CON3], [CON4]) "

Используя функцию recast / dcast, это можно сделать, но как новый пользователь я не знаю, как это сделать. даже я не знаю, в чем разница между recast и dcast.

Я знаю, что это много вопросов, но если кто-нибудь поможет мне в этом

1 Ответ

1 голос
/ 08 марта 2019

Пакет sqldf по умолчанию использует SQLite в качестве базовой базы данных, поэтому используемый вами синтаксис PIVOT не будет работать. Хотя вы можете изменить базовую базу данных на SQL Server, вы также можете просто использовать стандартный сводный запрос ANSI:

sql <- "SELECT \"Style Name\",
            SUM(CASE WHEN GRNUOM = 'con2' THEN Qty ELSE 0 END) AS con2,
            SUM(CASE WHEN GRNUOM = 'con3' THEN Qty ELSE 0 END) AS con3,
            SUM(CASE WHEN GRNUOM = 'con4' THEN Qty ELSE 0 END) AS con4,
            SUM(CASE WHEN GRNUOM = 'Con15' THEN Qty ELSE 0 END) AS Con15,
            SUM(CASE WHEN GRNUOM = 'Con2' THEN Qty ELSE 0 END) AS Con2,
            SUM(CASE WHEN GRNUOM = 'Con3' THEN Qty ELSE 0 END) AS Con3,
            SUM(CASE WHEN GRNUOM = 'Con4' THEN Qty ELSE 0 END) AS Con4
FROM data6
GROUP BY \"Style Name\""

result <- sqldf(sql)

Я не уверен, что con2 и Con2 будут фактически распознаны как отдельные имена столбцов. Возможно, вам придется поместить все имена столбцов в двойные кавычки, чтобы приведенный выше запрос работал так, как вы ожидаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...