R将大字符串转换为数据帧

时间:2018-10-30 15:31:46

标签: r string dataframe blob r-markdown

我正在一个项目中,我们从Blob存储中导入了数据。数据存储为一个巨型字符串。

列之间用逗号分隔,行之间用此字符“ \ r \”分隔

如何将其设为数据框?

以下是数据示例:

 X1,X2,X3,X4,X5,\r\yes,yes,no,no,yes,\r\yes,yes,yes,no,yes

,它在数据框中应如下所示:

     X1  X2  X3  X4  X5
  1  yes yes no  no yes
  2  yes yes yes no yes

提前谢谢!

2 个答案:

答案 0 :(得分:0)

第一步是用换行符,\r\替换\n。但是,您应该注意,在下面的示例中,由于\是R中的转义字符,因此我必须使用双反斜杠。请在您的实时示例中根据需要进行修改,但是无论哪种方法都可以。

x = 'X1,X2,X3,X4,X5,\\r\\yes,yes,no,no,yes,\\r\\yes,yes,yes,no,yes'
x = gsub(',\\r\\', '\n', x, fixed=TRUE)

> read.csv(text=x)
   X1  X2  X3 X4  X5
1 yes yes  no no yes
2 yes yes yes no yes

答案 1 :(得分:0)

我们可以使用read.table来读取单个字符串数据。假设\被转义,用sep=","读取后,使用sub\替换为""

out <- read.table(text = str1, sep=",", fill = TRUE, 
 header = TRUE, stringsAsFactors = FALSE)[-6]
out$X1 <- sub("[\\]", "", out$X1)
out
#   X1  X2  X3 X4  X5
#1 yes yes  no no yes
#2 yes yes yes no yes

数据

str1 <- "X1,X2,X3,X4,X5,\r\\yes,yes,no,no,yes,\r\\yes,yes,yes,no,yes"