我有一个文本数据文件,我可能会使用readLines
. 每个字符串的初始部分包含大量乱码,然后是我需要的数据。乱码和数据通常用三个点分隔。我想在最后三个点之后拆分字符串,或者用某种标记替换最后三个点,告诉 R 将这三个点左侧的所有内容视为一列。
这是 Stackoverflow 上的类似帖子,它将找到最后一个点:
然而,在我的例子中,一些数据有小数,所以定位最后一个点是不够的。另外,我认为...
在 R 中具有特殊含义,这可能会使问题复杂化。另一个潜在的并发症是一些点比其他点大。此外,在某些行中,三个点之一被替换为逗号。
除了gregexpr
在上面的帖子中我尝试过使用gsub
,但无法找出解决方案。
这是一个示例数据集和我希望达到的结果:
aa = matrix(c(
'first string of junk... 0.2 0 1',
'next string ........2 0 2',
'%%%... ! 1959 ... 0 3 3',
'year .. 2 .,. 7 6 5',
'this_string is . not fine .•. 4 2 3'),
nrow=5, byrow=TRUE,
dimnames = list(NULL, c("C1")))
aa <- as.data.frame(aa, stringsAsFactors=F)
aa
# desired result
# C1 C2 C3 C4
# 1 first string of junk 0.2 0 1
# 2 next string ..... 2 0 2
# 3 %%%... ! 1959 0 3 3
# 4 year .. 2 7 6 5
# 5 this_string is . not fine 4 2 3
我希望这个问题不要被认为太具体。文本数据文件是使用我昨天关于在 R 中读取 MSWord 文件的帖子中概述的步骤创建的。
有些行不包含乱码或三个点,而只包含数据。但是,这可能是后续帖子的并发症。
谢谢你的任何建议。