У нас есть опрос, который запрашивает «выбрать все подходящие варианты», поэтому результатом является строка внутри кавычек со значениями, разделенными запятыми. т.е. "красный, черный, зеленый"
Есть другой вопрос о доходе, поэтому у меня есть фактор с "низким, средним, высоким"
Я хочу иметь возможность ответить на вопросы: Какой процент выберите «Красный», затем сгруппируйте его по доходам.
Я могу разделить строку с помощью '' '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)
}