我无法读取具有矩阵格式数据格式的文本文件,如下所示:
Location Product Day1 Day2 Day3 Day4 ... Day1 Day2 Day3
Jan Jan Jan ... Feb Feb Feb
123 23 8 9 3
234 25 2 4 9
254 87 3
213 56 7 5
它本质上是一个时间序列,每天按位置包含大量产品。我想最终把它转换为" sql"表格式。
我遇到的麻烦是,当我尝试以下操作时,只需跳过第2行并使用fill = TRUE
导入其余数据,我就无法获得所需的结果。实际的计数会向右移动,并且不会与第一个"标题对齐。行。我想将第1行和第2行组合在一起,以便从第1行的第1天开始生成日期字段,然后将空字段保留为空或NA。然后最终将此数据转换为以下格式:
Location Product Period Count
123 23 Jan 1
234 25 Jan 1 5
234 25 Feb 3 9
我该如何做到这一点?
答案 0 :(得分:0)
这演示了pkg:fwf_empty
的自动位置猜测函数readr
。我无法使read_fwf
- 函数接受file
参数的文本连接参数,因此需要将文本保存为略微编辑的版本,如下所示:
Location Product Day1 Day2 Day3 Day4 Day1 Day2 Day3
Jan Jan Jan Jan Feb Feb Feb
123 23 8 9 3
234 25 2 4 9
254 87 3
213 56 7 5
R代码:
require(readr)
fwf_empty(file="~/Untitled 4 copy.txt")
$begin
[1] 0 9 17 22 27 32 40
$end
[1] 8 16 21 26 31 36 55
$col_names
[1] "X1" "X2" "X3" "X4" "X5" "X6" "X7"
> read_fwf(file="~/Untitled 4 copy.txt", fwf_empty(file="~/Untitled 4 copy.txt"))
Warning: 8 parsing failures.
row col expected actual
2 X9 4 chars 3
3 X8 4 chars 2
3 -- 9 columns 8 columns
4 X9 4 chars 3
5 X3 4 chars 2
... ... ......... .........
.See problems(...) for more details.
X1 X2 X3 X4 X5 X6 X7 X8 X9
1 Location Product Day1 Day2 Day3 Day4 Day1 Day2 Day3
2 <NA> <NA> Jan Jan Jan Jan Feb Feb Feb
3 123 23 <NA> <NA> 8 <NA> 9 3 <NA>
4 234 25 2 4 <NA> <NA> <NA> <NA> 9
5 254 87 3 <NA> <NA> <NA> <NA> <NA> <NA>
6 213 56 <NA> 7 <NA> <NA> 5 <NA> <NA>
然后重命名列并删除前两行:
> colnm <- paste0( inp[1,], inp[2,])
> colnm
[1] "LocationNA" "ProductNA" "Day1Jan" "Day2Jan" "Day3Jan"
[6] "Day4Jan" "Day1Feb" "Day2Feb" "Day3Feb"
> colnames(inp) <- colnm
> inp[-(1:2), ]
LocationNA ProductNA Day1Jan Day2Jan Day3Jan Day4Jan Day1Feb Day2Feb
3 123 23 <NA> <NA> 8 <NA> 9 3
4 234 25 2 4 <NA> <NA> <NA> <NA>
5 254 87 3 <NA> <NA> <NA> <NA> <NA>
6 213 56 <NA> 7 <NA> <NA> 5 <NA>
Day3Feb
3 <NA>
4 9
5 <NA>
6 <NA>