Разделить список на датафреймы через запятую
Это может быть дубликатом, но через некоторое время я все еще не нашел простой, адекватный ответ для R.
У меня есть список answers
содержит данные с разделителями-запятыми различных типов (числа, символы, строки, даты) в многочисленных строках. Как я делю это так, чтобы у каждой строки было много столбцов с каждым значением данных в этом?
Я пытался с strsplit
а также separate
функции, но не удалось.
Мои текущие данные выглядят так:
[[2,4,6,Yes,No,ABC,date,(not asked),2018-01-04][1,3,5,No,Yes,DEF,date,|I don't know|, 2018-04-03]]
И я хочу превратить его в фрейм данных следующим образом:
V1 V2 V3 V4 V5 V6 V7 V8 V9
1 2 4 6 Yes No ABC date (not asked) 2018-01-04
2 1 3 5 No Yes DEF date I don't know 2018-04-03
Я попробовал это:
new_answers<-read.csv(text=gsub("\\,","\n", answers), # replace "," with linefeeds
header = FALSE)
но это разделяет значения данных по вертикали (в супер длинный столбец), а не по горизонтали (в кадр данных с несколькими столбцами).
1 ответ
Решение
Заменить все "]"
с переводами строки и удаления "["
Проанализирую процесс с read.csv:
txt <- "[[2,4,6,Yes,No,ABC,date,(not asked),2018-01-04][1,3,5,No,Yes,DEF,date,|I don't know|, 2018-04-03]]"
read.csv(text=gsub("\\[", "", #remove "["
gsub("\\]","\n", txt)), # replace "]" w/ R-lf's
header = FALSE, col.names = LETTERS[1:9])
A B C D E F G H I
1 2 4 6 Yes No ABC date (not asked) 2018-01-04
2 1 3 5 No Yes DEF date |I don't know| 2018-04-03