R语言 在一列txt文件中导入日期时间

rkttyhzu  于 2023-05-04  发布在  其他
关注(0)|答案(2)|浏览(169)

如何正确导入日期时间列?date+time在一列中,如DATE
我有一个txt文件,其中包含列:序列号、时间和温度。
我试过:

test.c <- read.csv("110.txt", header = F,skip = 26, sep = "",  dec = ",", col.names = "Seriennummer","Zeit","Temperatur°C")

然而,这总是给我:

数据在编辑器中的外观如下:

数据:

readLines("8.txt",n=10)

 [1] "Seriennummer                      Zeit\tTemperatur°C"
 [2] "         1           16.03.2023 15:17:33      26,8"  
 [3] "         2           16.03.2023 15:18:33        27"  
 [4] "         3           16.03.2023 15:19:33      26,8"  
 [5] "         4           16.03.2023 15:20:33      26,3"  
 [6] "         5           16.03.2023 15:21:33        26"  
 [7] "         6           16.03.2023 15:22:33      25,5"  
 [8] "         7           16.03.2023 15:23:33      25,3"  
 [9] "         8           16.03.2023 15:24:33      25,1"  
[10] "         9           16.03.2023 15:25:33      24,9"
m2xkgtsf

m2xkgtsf1#

read.fwf(读取固定宽度字段)应该可以很好地工作,但您必须计算行中的字符数以确定适当的widths=参数(从您发布的图像中很难区分)。
我不认为base R会自动转换为日期时间格式,但readr::read_fwf()(类似于read.fwf,但更灵活一点)可能会。它可能会正确地“猜测”。.. based on the positions of empty columns”(默认设置),您可以尝试一下。..
看起来这是可行的(猜测不起作用,因为它想再次分割日期和时间。..我使用了一个支持列号的文本编辑器来为每个字段确定适当的开始/结束位置)

library(readr)
read_fwf("fwf.txt", 
         ## doesn't seem to handle header, and TAB in
         ## header might be problematic anyway ...
         skip = 1,
         ## feel free to use German names instead ...
         fwf_cols(n = c(9,10),
                  datetime = c(21,40),
                  temp = c(46,50)),
         locale = locale(decimal_mark = ","))
kknvjkwl

kknvjkwl2#

你可以逐行读取文件,将行存储为dataframe列,然后使用{tidyr}的separate函数将文本拆分为列,使用两个或多个空格作为分隔符(这样只包含一个空格的datetime就不会被拆分):

library(tidyr)
data.frame(data = readLines('path_to_your_file.csv')) |>
  separate(data,
           sep = '[ \t]{2,}', ## at least 2 blanks/tabs needed to split by
           into = c('Seriennummer', 'Zeit', 'Temperatur')
           )

相关问题