如何正确导入txt文件中合并为一列的日期时间数据?
解决txt文件导入时日期时间列的类型识别问题
你当前的导入代码存在一个小问题:col.names 参数需要传入向量而非单独的字符串。修正后,可通过两种方式将日期时间列转换为正确的日期类型:
方法一:先导入数据,再转换日期时间列
先完成数据导入,再用 as.POSIXct() 函数将字符型日期时间列转为日期时间类型,需指定匹配的格式字符串(你的数据格式为 dd.mm.yyyy HH:MM:SS):
# 修正导入代码 test.c <- read.csv("110.txt", header = FALSE, skip = 26, sep = "", dec = ",", col.names = c("Seriennummer", "Zeit", "Temperatur°C")) # 转换日期时间列 test.c$Zeit <- as.POSIXct(test.c$Zeit, format = "%d.%m.%Y %H:%M:%S")
方法二:导入时直接指定列类型(推荐用tidyverse工具)
使用 readr 包的 read_delim() 函数,可在导入阶段直接定义每列类型,同时更灵活处理多空格分隔的文本:
library(readr) test.c <- read_delim("110.txt", skip = 26, delim = " ", trim_ws = TRUE, # 自动去除单元格前后空格 locale = locale(decimal_mark = ","), # 指定逗号为小数分隔符 col_names = c("Seriennummer", "Zeit", "Temperatur°C"), col_types = cols( Seriennummer = col_integer(), Zeit = col_datetime(format = "%d.%m.%Y %H:%M:%S"), Temperatur°C = col_double() ))
补充说明
- 格式字符串
%d.%m.%Y %H:%M:%S对应数据格式:%d代表日,%m代表月,%Y代表四位年份,%H:%M:%S代表时分秒。 - 原数据用多个空格分隔,
read.csv的sep = ""会自动处理任意数量空格;read_delim中设置trim_ws = TRUE也能达到同样效果。
内容的提问来源于stack exchange,提问作者ChrissiLissi
相关产品推荐
相关产品推荐

