【问题标题】:how to convert a single text file to a csv如何将单个文本文件转换为 csv
【发布时间】:2017-04-02 04:14:35
【问题描述】:

我试图从文本文件中获取表格,然后将其输出(或转换)为 csv 以便于操作。我查看并找不到有关此任务的任何具体帮助。

文本文件如下所示:

C#             CLA OLA Quiz Exam FinalExam
c1234501    10 20 10 30 30
c1234502     9 10  5 20 20
c1234503    10 17  8 27 27
c1234504     8 14 10 29 15
c1234505     7 18  3 24 27

我想让它像这样输出:

C#,CLA,OLA,Quiz,Exam,FinalExam,
c1234501,10,20,10,30,30,
c1234502,9,10,5,20,20,
c1234503,10,17,8,27,27,
c1234504,8, 14, 10, 29, 15,
c1234505,7, 18,  3, 24, 27,

以逗号作为分隔符。 到目前为止,我想出了这段代码:

tab = read.delim(file, header = TRUE)
write.table(tab, file="name_file.csv",sep=",",col.names=TRUE,row.names=FALSE)

但结果并不是我想象的那样:

"C.","CLA.OLA.Quiz.Exam.FinalExam"
"c1234501","10 20 10 30 30"
"c1234502"," 9 10  5 20 20"
"c1234503","10 17  8 27 27"
"c1234504   "," 8 14 10 29 15"
"c1234505   "," 7 18  3 24 27"

任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 尝试 (1) read.table() 而不是 read.delim(); (2) 使用quote=FALSEwrite.csv()
  • 试过了,它给了我一个奇怪的错误Error in read.table(file, header = TRUE) : more columns than column name
  • read.table()中添加comment=""
  • 行得通!谢谢。我要做的最后一件事是在输出中每行的最后一个元素添加一个逗号:C#,CLA,OLA,Quiz,Exam,FinalExam, 知道怎么做吗?
  • @BigShiba:为什么要在末尾添加逗号?它会有效地为您提供一个完全空的额外列。这可能会导致混乱。

标签: r csv


【解决方案1】:

明确地说:

tab <- read.table("name_file.txt", comment="", header=TRUE)
write.csv(tab, "name_file.csv", row.names=FALSE, quote=FALSE)

我知道你没有要求它,但如果你本质上是使用 R 作为文件转换器,那么通过控制台/终端使用 sed 或类似的东西可能更方便。前:

sed -E 's/[[:blank:]]+/,/g' name_file.txt > name_file.csv

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多