Распределение столбцов в R создает нехватку памяти - PullRequest
0 голосов
/ 04 июля 2019

У меня есть форма опроса, и мне нужно сгруппировать этот набор данных в одну строку, но у меня есть некоторые проблемы с использованием спреда и группы.

Мой набор данных имеет следующий формат: данные

country date_   user_id int_id  user_name   ext_name    q_order questions   answers
AR  2019    AR-100  XP200   jhon foo    damian, khon    1   Question1 … yes
AR  2019    AR-100  XP200   jhon foo    damian, khon    2   Question2 … 0
AR  2019    AR-100  XP200   jhon foo    damian, khon    3   Question3 … no apply
AR  2019    AR-100  XP200   jhon foo    damian, khon    4   Question4 … 0
AR  2019    AR-100  XP200   jhon foo    damian, khon    5   Question5 … 0
AR  2019    AR-100  XP200   jhon foo    damian, khon    6   Question6 … yes
US  2018    US-100  PP300   Peter fields    jhon voigh  1   Question1 … no
US  2018    US-100  PP300   Peter fields    jhon voigh  2   Question2 … 0
US  2018    US-100  PP300   Peter fields    jhon voigh  3   Question3 … yes apply
US  2018    US-100  PP300   Peter fields    jhon voigh  4   Question4 … 0
US  2018    US-100  PP300   Peter fields    jhon voigh  5   Question5 … 0
US  2018    US-100  PP300   Peter fields    jhon voigh  6   Question6 … no

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

Код:

data %>% 
    group_by(country=.$country  ,
             date_ = .$date_,
             medic_id=.$user_id,
             user_id= .$int_id,
             user_name= .$user_name,
             ext_name= .$ext_name,
             q_order=.$q_order
             ) %>% 
    spread(questions, answers) 

Приведенный выше код дает мне недостаточно памяти.

Я даже пытался с dcast

data %>% 
    select(-q_order) %>% 
    dcast( ...  ~ questions, value.var = "answers")

И я получаю следующее:

Country.Code    Created.Date    user_id int_id  user_name   ext_name    Question1 … Question2 … Question3 … Question4 … Question5 … Question6 …
AR  3/28/2019   AR-100  XP200   jhon foo    damian, khon    1   2   0   1   1   1
US  4/28/2019   US-100  PP300   Peter fields    jhon voigh  0   1   1   2   1   2

но мне нужно:

Country.Code    Created.Date    user_id int_id  user_name   ext_name    Question1 … Question2 … Question3 … Question4 … Question5 … Question6 …
AR  3/28/2019   AR-100  XP200   jhon foo    damian, khon    yes 0   no apply    0   0   yes
US  4/28/2019   US-100  PP300   Peter fields    jhon voigh  no  0   yes apply   0   0   no

Почемуdcast преобразовать в числовые значения переменных из ответов?(Я даже пытался с var.values ​​= 'answers')?

Мой вопрос очень похож на эту ссылку !

Но я не могу заставить его работать, всегда выдавать память или генерировать числовые значения вместо значений из переменной ответов.

1 Ответ

0 голосов
/ 07 июля 2019

Я наконец нашел ответ!

Проблема заключалась в том (что я новичок в R), что я хочу иметь значения некоторых столбцов в строках, но эти значения являются символами, и в большинстве случаев решения обрабатывают числовые, а не символы!

С другой стороны, мое решение (пример с 5 строками) прекрасно работает с RESHAPE !, но с реальным набором данных (small --medium) мне не хватает памяти (никогда не заканчивается).

Например, следующий код никогда не заканчивается (и да, я тоже пробовал с группой, как я сказал)

b<-reshape(data=a %>% select(-q_order) ,
           direction="wide",
           idvar = c("Country.Code","Created.Date", "user_id", "int_id", "user_name",
                     "ext_name"),
           timevar="questions" )

Это решение запускается через 2 секунды:

b<-dcast( a, Country.Code+Created.Date+user_id+int_id +user_name+ ext_name ~ questions,
          toString, value.var="answers")

Наконец

Country.Code    Created.Date    user_id int_id  user_name   ext_name    Question1 … Question2 … Question3 … Question4 … Question5 … Question6 …
AR  3/28/2019   AR-100  XP200   jhon foo    damian, khon    yes 0   no apply    0   0   yes
US  4/28/2019   US-100  PP300   Peter fields    jhon voigh  no  0   yes apply   0   0   no
...