读取“下一行分隔”的文本文件

时间:2019-04-15 05:52:22

标签: r import read.table

我不确定如何正确地表达这个问题,所以我举一个例子。
假设我有一个.txt文件,其中第一行是DATE,第二行是TEXT。然后重复该模式,第3行是DATE,第4行是TEXT。 如何将其读入R并将其转换为两列dataframe
本质上,我认为它是“下一行分隔的”,不确定这是否是描述它的正确方法。

以下是示例数据,该数据将保存在.txt文件中:

.LOG
3:42 PM 12/04/2019
Task 1
3:45 PM 12/04/2019
Task 2
3:55 PM 13/04/2019
Task 3
3:47 PM 15/04/2019

我希望它看起来像:

DATE                TEXT
3:42 PM 12/04/2019  Task 1
3:45 PM 12/04/2019  Task 2
3:55 PM 13/04/2019  Task 3

3 个答案:

答案 0 :(得分:4)

read.tablesep = "\n"一起使用来读取文件,这样您将获得单列数据框

df <- read.table(text = "3:42 PM 12/04/2019
                 Task 1
                 3:45 PM 12/04/2019
                 Task 2
                 3:55 PM 13/04/2019
                 Task 3", sep = "\n")

要从文件中读取它,

df <- read.table("path_of_the_file.txt", sep = "\n")

现在通过选择交替的行将其分为两列

data.frame(Date = df[c(TRUE, FALSE), ], Text = df[c(FALSE, TRUE), ])

#               Date    Text
#1 3:42 PM 12/04/2019 Task 1
#2 3:45 PM 12/04/2019 Task 2
#3 3:55 PM 13/04/2019 Task 3

答案 1 :(得分:3)

您可以执行以下操作:

 MessyData <- read.table("Myfile.txt")
 CleanData <- data.frame(DATE = MessyData[seq(1, length(MessyData), by = 2)],
                         TEXT = MessyData[seq(2, length(MessyData), by = 2)])

答案 2 :(得分:3)

这是matrix方法的更好选择

as.data.frame(matrix(trimws(df$V1), ncol = 2, byrow = TRUE, 
          dimnames = list(NULL, c("DATE", "TEXT"))))
#               DATE   TEXT
#1 3:42 PM 12/04/2019 Task 1
#2 3:45 PM 12/04/2019 Task 2
#3 3:55 PM 13/04/2019 Task 3

读取数据集后

数据

df <- read.table("file.txt", sep = "\n")