Обработка данных в R с меньшим временем обработки - PullRequest
0 голосов
/ 27 августа 2018

Как сократить время обработки для манипулирования данными в формате ниже? У меня есть почти 100 000 данных в аналогичном формате, где столбцы могут отличаться, поэтому я ищу общий код, который может определить количество столбцов и обеспечить вывод.

Мои фактические данные похожи:

enter image description here

Verbatim <- c("dum1",   "dum2", "dum3", "dum4", "dum5")
Code_1 <- c("998 - NOTHING DISLIKED;nosort",    "066 - dislike/ contains sugar (unspecified)",  "138 - too expensive",  "127 - only good for kids", "138 - too expensive")
Code_2 <- c("", "051 - not calorie-free",   "111 - wasteful/ too much packaging",   "138 - too expensive",  "052 - high in carbohydrates")
Code_3 <- c("","","127 - only good for kids",   "067 - high in sugar",  "131 - not good for breakfast/ morning")    
Code_4 <- c("","","", "068 - dislike/ contains high fructose corn syrup",   "125 - not good for a snack")   
Code_5 <- c("","","","","123 - not good for kids")  
Code_6 <- c("","","","","017 - dislike taste of/ contains center/ filling/ stuffing (unspecified)")
Code_7 <- c("","","","","102 - messy")  
Code_8 <- c("","","","","106 - other ease of packaging comments;nosort")

Raw_data <- data.frame(Verbatim,Code_1,Code_2,Code_3,Code_4,Code_5,Code_6,Code_7,Code_8)

Таким образом, с помощью приведенных выше данных мы хотели бы распределить данные следующим образом, в котором все категории, упомянутые от Code1 до Code8, будут заголовком столбца (уникальными значениями), а соответствующие значения будут показаны против него.

enter image description here

Required_ouput <- data.frame(
  "Verbatim" <- c("dum1", "dum2","dum3","dum4", "dum5"),
  "998 - NOTHING DISLIKED;nosort" <- c(1, 0, 0, 0, 0),
  "066 - dislike/ contains sugar (unspecified)" <- c(0, 1, 0, 0, 0),
  "138 - too expensive" <- c(0, 0, 1, 1, 1),
  "127 - only good for kids" <- c(0, 0, 1, 1, 0),
  "051 - not calorie-free" <- c(0, 1, 0, 0, 0),
  "111 - wasteful/ too much packaging" <- c(0, 0, 1, 0, 0),
  "052 - high in carbohydrates" <- c(0, 0, 0, 0, 1),
  "067 - high in sugar" <- c(0, 0, 0, 1, 0),
  "131 - not good for breakfast/ morning" <- c(0, 0, 0, 0, 1),
  "068 - dislike/ contains high fructose corn syrup" <- c(0, 0, 0, 1, 0),
  "125 - not good for a snack" <- c(0, 0, 0, 0, 1),
  "123 - not good for kids" <- c(0, 0, 0, 0, 1),
  "017 - dislike taste of/ contains center/ filling/ stuffing (unspecified)" <- c(0, 0, 0, 0, 1),
  "102 - messy" <- c(0, 0, 0, 0, 1),
  "106 - other ease of packaging comments;nosort" <- c(0, 0, 0, 0, 1)
)

1 Ответ

0 голосов
/ 27 августа 2018
library(dplyr)
library(tidyr)
Required_ouput <- gather(Raw_data,key,val,-Verbatim) %>% select(-key) %>%
                  table() %>% as.data.frame.matrix() %>% select(-1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...