【问题标题】:Split column of long strings into multiple columns based on string position根据字符串位置将长字符串的列拆分为多列
【发布时间】:2022-11-15 03:52:27
【问题描述】:

我有一个 txt 文件,我需要将其转换为 R 中可用的数据框。示例行如下所示:

10040 1491 32006 820085011 .007 .009 .043 -.003 .008 .036 -.031 -.036 .076 .056 .124 .093 -.112 -.091 .034 .043 .00600 .01200 .004500000000 .042333333333 . 0568 .0058 -.0542 -.0304 .08625 .05425 .05425 .088857142857 .116142857143 -.072714285714 -..115571428571 .071428571 .02125.0668.77712555.7712555.77712555.11571485712555.7771255

我想最终得到一个包含多个列的 df,如下所示:

10040 1 49 1 3 2006 8 2008 50 1 1 .007 .009 .043 -.003 .008 .036 -.031 -.036 .076 .056 .124 .093 -.112 -.091 .034 .043 .00600 .01200 .004500000000 .042333333333 .0568 .0058 -.0542 -.0304 .08625 .05425 .088857142857 .116142857143 -.072714285714 -.115571428571 .02125 .04350 8.71250 8.71825 8.729666666667 8.749500000000 8.6866 8.6722

数据没有被空格完美分割,否则我会知道该怎么做。我知道将字符串分成多列的位置:位置 5、7、9、10、12、16、18、22 等,但想知道是否有一种方法可以在没有 50 行代码的情况下做到这一点?也许使用 tidyr 的单独功能?似乎找不到任何说明如何将 sep 参数与数字位置一起使用的文档或示例。

【问题讨论】:

    标签: r dataframe tidyr


    【解决方案1】:

    在进行了更多测试之后,事实证明我可以只传递一个数值列表来拆分,以便在这些位置进行分隔。

    简要示例:

    testDF <- separate(grossTXT,
                   V1,
                   c('M2ID', 'SAMPLMAJ', 'B1PAGE_M2', 'B1PRSEX', 'B5PEEGDATE_MO'),
                   sep = c(5,7,9,10,12),
                   remove = TRUE,
                   convert = TRUE
                   )
    

    这非常有效,让我也可以为每个新专栏命名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-18
      • 1970-01-01
      • 2018-10-24
      • 2019-05-17
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 2019-04-16
      相关资源
      最近更新 更多