You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RStudio下将目录提取的TXT转换为含日期时间列的CSV文件

解决R中目录TXT转CSV的列拆分问题

我在RStudio里需要按文件修改日期做标识,已经把目录内容导出成TXT文件,但尝试多种代码转CSV时都出警告,没法把内容拆分成Mode、Date、Time、Length、Name这几列并导出成CSV。

我的TXT文件内容如下:

Mode                 LastWriteTime         Length Name                                                                 
----                 -------------         ------ ----                                                                                                                             
-a---l        11/30/2022   4:08 PM          13823 TT3 - 2022-11-30 16-08-36.PL3                              
-a---l        11/30/2022   4:08 PM          13823 TT3  - 2022-11-30 16-08-46.PL3                              
-a---l        11/30/2022   4:08 PM          13823 TT3  - 2022-11-30 16-08-55.PL3                              
-a---l        11/30/2022   4:09 PM          13823 TTT3 - 2022-11-30 16-09-04.PL3        

期望的列格式:

Mode   -a---l 
Date   11/30/2022           
Time   4:08 PM           
Length 13823  
Name   TT3 - 2022-11-30 16-08-36.PL3

解决方案:用固定宽度读取处理

你的TXT是固定宽度格式,不是普通的分隔符格式,所以不能直接用read.csv这类函数。可以用R的基础包或readr包按列的宽度来读取,拆分出需要的列:

方法1:用基础包read.fwf

# 读取固定宽度文件,跳过前两行(表头和分隔线)
file_data <- read.fwf("你的文件名.txt",
                      widths = c(10, 10, 12, 10, 50), # 对应Mode、Date、Time、Length、Name的宽度
                      skip = 2,
                      stringsAsFactors = FALSE)

# 设置列名
colnames(file_data) <- c("Mode", "Date", "Time", "Length", "Name")

# 导出为CSV
write.csv(file_data, "输出文件名.csv", row.names = FALSE)

方法2:用readr包的read_fwf(更灵活)

如果安装了readr包,用这个方法更精准:

library(readr)

# 定义各列的起始和结束位置(根据TXT内容调整)
file_data <- read_fwf("你的文件名.txt",
                      fwf_positions(start = c(1, 12, 23, 36, 47),
                                    end = c(10, 21, 34, 45, Inf)),
                      skip = 2,
                      col_names = c("Mode", "Date", "Time", "Length", "Name"))

# 导出CSV
write_csv(file_data, "输出文件名.csv")

说明

  • 若列拆分不准确,调整widths或start/end的数值即可,对着TXT内容数清楚每列的起始和结束位置就行。
  • skip=2是跳过前两行的表头和分隔线,直接读取数据行。

内容的提问来源于stack exchange,提问作者Abo Yamen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 02:50:26