如何读取R中几乎每列都有不同字符数的.txt文件

时间:2018-03-12 23:41:37

标签: r

我是R的新手,我想请一些帮助。 所以我有一个txt文件,里面的数据如下所示:

14853 C001    1 Apples                                                      Apples
14854 BX0     0 Oranges                                                     Oranges
14855 F00058  0 Apples and Oranges in the, basket                           Apples and Oranges in the, [basket]

所有列都是无头的,我试图在像这样的列的数据框中组织它们:

'14853' 'C001' '1' 'Apples' 'Apples'
'14854' 'BX0' '0' 'Oranges' 'Oranges'
'14855' 'F00058' '0' 'Apples and Oranges in the, basket' 'Apples and Oranges in the, [basket]'

无论如何使用R?

来做到这一点

我使用read.table()fread()scan()等尝试过很多不同的事情......

1 个答案:

答案 0 :(得分:1)

为了解析输入文件,您需要确定文件的列宽。正如@thelatemail所述,您有固定宽度格式,可以使用base函数read.fwf来解决。

我在下面提供解决方案:

library(readr)

txt <- paste(
  "14853 C001    1 Apples                                                      Apples",
  "14854 BX0     0 Oranges                                                     Oranges",
  "14855 F00058  0 Apples and Oranges in the, basket                           Apples and Oranges in the, [basket]",
  sep = "\n"
)

df <- read_fwf(txt, fwf_widths(c(6, 7, 2, 60, 36)))

# # A tibble: 3 x 5
#      X1 X2        X3 X4                                X5                                 
#   <int> <chr>  <int> <chr>                             <chr>                              
# 1 14853 C001       1 Apples                            Apples                             
# 2 14854 BX0        0 Oranges                           Oranges                            
# 3 14855 F00058     0 Apples and Oranges in the, basket Apples and Oranges in the, [basket]
  

N.B。您必须考虑固定宽度的空白区域,因为没有其他分隔符。另请注意,列类型将猜测使用与系列中其他函数相同的逻辑,例如read_csv,或者使用col_typescol_names参数将允许您提供名称,因为它们在您的输入中不可用。