пытаясь обобщить данные опроса по вопросам с «выбрать все подходящие», используя R - PullRequest
0 голосов
/ 15 апреля 2020

У нас есть опрос, который запрашивает «выбрать все подходящие варианты», поэтому результатом является строка внутри кавычек со значениями, разделенными запятыми. т.е. "красный, черный, зеленый"

Есть другой вопрос о доходе, поэтому у меня есть фактор с "низким, средним, высоким"

Я хочу иметь возможность ответить на вопросы: Какой процент выберите «Красный», затем сгруппируйте его по доходам.

Я могу разделить строку с помощью '' 'df4 <- c ("черный, серебристый, зеленый") ". Я могу создать фрейм данных с отметкой времени и разделенной строкой с '' 't2 <- as.data.frame (c (df2 [2], l2))' '' </p>

Я не могу понять, как это сделать это для всех рядов одновременно.

Вот DPUT входа:

    structure(list(RespData = structure(1:2, .Label = c("1/20/2020", 
    "1/21/2020"), class = "factor"), CarColor =             c("red,blue,green,yellow", 
    "black,silver,green")), row.names = c(NA, -2L), class =     "data.frame")

, а вот DPUT желаемого выхода:

    structure(list(RespData = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 
2L), .Label = c("1/20/2020", "1/21/2020"), class = "factor"), 
    Cars = structure(c(3L, 1L, 2L, 4L, 5L, 6L, 2L), .Label = c("blue", 
    "green", "red", "yellow", "black", "silver"), class = "factor")), row.names = c(NA, 
-7L), class = "data.frame")

Пример функции:

MySplitFunc <- function(ListIn) {
# build an empty data frame and set the column names
   x1.all <- ListIn[0,]
  names(x1.all) <- c("ResponseTime", "Descriptive")
  # for each row build the data and combine to growing list
  for(x in 1:nrow(ListIn)) {
    #print(x)
    r1 <- ListIn[x,1]
    c1 <- strsplit(ListIn[x,2],",")
    x1 <- as.data.frame(c(r1,c1))
  # set the names and combine to all
    names(x1) <- c("ResponseTime", "Descriptive")
    x1.all <- rbind(x1.all,x1)

  }
  # strip the whitespace
  x1.all <- data.frame(lapply(x1.all, trimws), stringsAsFactors = TRUE)

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