首页 > 解决方案 > 将文本文件读取为格式化列表

问题描述

我想将一个文本文件作为列表导入 R,但不知道如何告诉 R 所需的格式。源列表为txt文件,格式如下:

Column1=a
Date=21.01.2020
Column2=1|2|3
Subtable_Column1=a|2|3
Subtable_Column2=c|d|e

[2]
Column1=b
Date=21.02.2020
Column2=1|2|4
Subtable_Column1=a|2|3
Subtable_Column2=c|d|e
Subtable_Column3=c|d|e

最后,每个都[n]应该是包含命名向量的列表索引(例如第 1 列、日期等)
。这在 R 中怎么可能?

谢谢你的帮助!

标签: rarrayslisttxt

解决方案


这是一种预先格式化数据的方法。

变量数据

Column1=a
Date=21.01.2020
Column2=1|2|3
Subtable_Column1=a|2|3
Subtable_Column2=c|d|e

[2]
Column1=b
Date=21.02.2020
Column2=1|2|4
Subtable_Column1=a|2|3
Subtable_Column2=c|d|e
Subtable_Column3=c|d|e

它将每个数据集放入数据框的一行中:

awk -F '=' 'BEGIN{i=1}
!NF{i++; j=0; next}
/=/{ j++; cname[0,j]=$1; content[i,j]=$2; rows=i; cols[i]++ }
END{ m=0; for(k in cols){ if(cols[k]>m){ m=cols[k] } };
  for(j=1;j<m;j++){ printf("%s,",cname[0,j]) }; print cname[0,m];
  for(i=1;i<=rows;i++){
    for(j=1;j<m;j++){
      printf("%s,",content[i,j]) } print content[i,m] } }' varval.dat > varval.csv

回复:

a <- read.csv("varval.csv", na.strings="")
#   Column1       Date Column2 Subtable_Column1 Subtable_Column2 Subtable_Column3
# 1       a 21.01.2020   1|2|3            a|2|3            c|d|e             <NA>
# 2       b 21.02.2020   1|2|4            a|2|3            c|d|e            c|d|e

我敢肯定这不是您想要的,但可以作为一个起点。


推荐阅读