首页 > 解决方案 > 按列而不是按 sep 解析 R 数据帧

问题描述

我有两行元素数据http://www.celestrak.com/NORAD/elements/我做了单行,导致 1,00 行 160 个数字和字符。与 CSV 不同,没有分隔符。使用 R,如何将数据解析为正确的列宽?这是一个数据示例,以及一些第一列。

1 00011U 59001A 18243.16403752 .00000112
123456789012345678901234567890

... col# 内容
1 01-01 行号,示例 - 1
2 03-07 卫星编号,示例 - 25544 3 08-08
分类(U=未分类的示例),
11 国际代号(发布年份的最后两位数字),示例 - 98
5 12–14 国际代号(发布编号 - 年份),示例 - 067
6 15–17 Intl 代号(发射的一部分),示例 - A

非常感谢你

标签: r

解决方案


您可以在 R 中使用read.fwf(). 您必须指定每列的宽度,我在将您的示例数据与您提供的列描述匹配时遇到了一些麻烦,但这主要是有效的:

read.fwf(
    textConnection("1 00011U 59001A 18243.16403752 .00000112"), 
    widths = c(2, 5, 2, 2, 3, 4),
    # Just reading everything as a string for the moment
    colClasses = "character"
)

输出:

  V1    V2 V3 V4  V5   V6
1 1  00011 U  59 001 A 18

推荐阅读