我努力将非统一数据读入R.
我实现了以下目标:
到目前为止一切都很好 - 我现在有了我想要的数据。但是 - 它只是一个包含所有数据的列的字符变量。
这会创建一个我所做的变量的样本,叫做" block" (前3行):
line1 = c(" 114.24 -0.39 0.06 13.85 -0.06 1402.11 -1.48 0.0003 0.0000 35.468 1.02 -0.02 0.00 0 1 1 1 0 49.87 4 -290 0 0 -0.002 -0.010 0.155 999.00 11482.66 999.00 11482.66 16:52:24:119 255 13.89 50.00 0.00 -5.49 0.00")
line2 = c(" 114.28 -0.39 0.08 13.84 -0.06 1402.57 -1.48 0.0004 0.0000 35.479 1.29 -0.02 0.00 0 1 1 1 0 49.82 4 -272 0 0 -0.002 -0.011 0.124 999.00 11482.66 999.00 11482.66 16:52:24:150 255 13.89 50.00 0.00 -5.49 0.00")
line3 = c(" 114.31 -0.39 0.09 13.83 -0.06 1403.03 -1.47 0.0005 0.0000 35.492 1.42 -0.02 0.00 0 1 1 1 0 49.78 4 -263 0 0 -0.002 -0.011 0.046 999.00 11482.66 999.00 11482.66 16:52:24:197 255 13.89 50.00 0.00 -5.49 0.00")
block = c(line1,line2,line3)
我的目标是将这些数据作为data.frame,每个数据点都有单独的列。
我尝试使用strsplit避风港有帮助(解决方案是否涉及strsplit?) - 这里最好的方法是什么?欢迎任何建议/反馈。
strsplit(块," \ S"固定= F)
答案 0 :(得分:2)
以下任何一项都适合您:
## Creates a "data.table"
library(splitstackshape)
cSplit(data.table(x = block), "x", " ")
## Creates a "data.frame"
read.table(text = block, header = FALSE)
## Creates a character matrix
do.call(rbind, strsplit(block, "\\s+"))
## Like the above, but likely to be faster
library(stringi)
stri_split_regex(block, "\\s+", simplify = TRUE)
请注意最后两个选项的"\\s+"
。 " +"是匹配多个空格。
答案 1 :(得分:0)