这可能是重复的,但是一段时间后,我仍然找不到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)
但这会将数据值垂直(分成超长列)而不是水平(分成具有多列的数据框)分开。
答案 0 :(得分:2)
用换行符替换所有"]"
,并使用read.csv删除"["
的tehn进程:
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