【发布时间】:2020-07-14 13:30:04
【问题描述】:
我有一个格式很糟糕的文本文件,我需要将其读入 R。我正在阅读一堆其他格式不很糟糕的文件 read.table,所以我想继续使用这个功能,如果可能的话。
文件如下所示:
M D YY CONC
7 1 78 15
0.00
0.15
1.06
1.21
10.91
34.55
69.09
87.27
73.67
38.65
12.27
2.27
6.52
0.45
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.19
0.96
4.59
4.55
4.59
7.25
7.13
11.60
1.06
0.15
1.50
1.16
0.00
0.00
0.00
0.00
0.00
7 1 78 16
0.00
0.00
0.00
0.00
7.25
1.50
9.00
20.25
51.25
55.00
53.75
3.13
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.80
0.98
4.00
2.47
5.63
3.50
7.88
0.43
2.30
0.00
0.00
0.00
0.00
0.00
0.00
0.00
7 1 78 17
4.15
0.00
0.00
0.15
2.27
16.36
54.37
67.96
58.07
3.58
0.89
0.20
0.52
0.59
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
5.44
0.00
3.09
3.26
7.17
9.39
8.65
3.09
0.45
7.41
3.18
0.00
2.05
0.00
在第一行提供的日期每小时有一个 CONC。我的最终目标是重复日期并添加一列一小时。所以第一位应该是这样的:
M D YY H CONC
7 1 78 1 15
7 1 78 2 0.00
7 1 78 3 0.15
7 1 78 4 1.06
7 1 78 5 1.21
7 1 78 6 10.91
7 1 78 7 34.55
7 1 78 8 69.09
我可以使用这个来读取文件:
monitor_datai <- read.table(file =file,header = TRUE, stringsAsFactors = FALSE, skip = 0, sep = "", fill = TRUE)
但这种方法的问题在于,在第一列中读取的数据是月份(如果在该行上提供)或浓度(如果没有为该行提供月份)。看起来像这样:
head(monitor_datai)
V1 V2 V3 V4
1 7.00 1 78 15
2 0.00 NA NA NA
3 0.15 NA NA NA
4 1.06 NA NA NA
5 1.21 NA NA NA
6 10.91 NA NA NA
所以,我需要帮助阅读文件并修复格式。
谢谢!
【问题讨论】:
-
使用以下术语对 SO 进行搜索:LOCF(最后一次观察结转)。很多包(data.table、tidyverse、zoo)都提供了这个功能..
-
另外,请澄清您的问题是关于读取数据还是关于填写缺失值...
-
两者,我无法读取文件,因为 R 认为每行的列数不同,一旦我可以读取文件,我将需要填写缺失的值。
标签: r read.table