拆分具有多个分隔符和列号的文件

时间:2013-03-22 19:24:45

标签: r

我将获得一个具有以下结构的统计输出文件:

> dput(x)
structure(list(V1 = c(0.236364, 0.032086, 0.062762, 0.095238, 
NaN, 0, 1, 2, 3, 4, 0.258706, 0.436735, 0.104167, 0.611336, 0.160279
), V2 = c(0.183333, 0.623333, 0.796667, 0.14, 0, NA, NA, NA, 
NA, NA, 0.67, 0.816667, 0.96, 0.823333, 0.956667), V3 = c(NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), .Names = c("V1", 
"V2", "V3"), class = "data.frame", row.names = c(NA, -15L)) 

读取数据的链接: https://docs.google.com/file/d/0BxSZDr4eTnb9aDhCOGRxVEV5aVE/edit?usp=sharing

数据属性:

  • 无标题

  • 该文件使用特定的分隔符选项
    numeric [space] [tab] [space] numeric [space] [tab] [space]#为2个数字列组件

  • 行号可能明显不同,但对于组件2和3
  • 总是相同的

<小时/> 我需要将其拆分为每个组件的data.frames:
1个部件 - 第2个柱部分
2个组件 - 1个列部分
3分量 - 第2列第2部分

我找不到将类似数据文件拆分为3个组件的一般方法。

我发现使用不同分隔符作为拆分对象的示例,但没有使用列号和分隔符选项的特殊情况。

如果示例足够,请告诉我。我不确定分隔符选项与此特定问题的相关性如何。我认为不是。

2 个答案:

答案 0 :(得分:1)

你可以先将3个字符的分隔符翻译成一个字符delims吗?

在命令行上,您可以尝试:

cat input.txt | sed 's/ \t /\t/g' > input2.txt

这将用“\ t”的

替换所有“\ t”

或者你可以在你最喜欢的txt编辑器中打开它并找到/替换所有

一旦分隔符采用标准格式,进行进一步处理就会容易得多

答案 1 :(得分:1)

如果组件1或组件3数据的第二列中没有NA值,则此处rle可能有用。基本方法,如果我正确理解您的问题并且相关条件成立,则应查看{{1}中“{V2}”列中NA值的运行您共享的数据。 dput会返回一个逻辑向量,我们可以使用is.na(x$V2)来确定数据的拆分位置:

rle