R 正在读取文本文件,该文件为;下一行以“分隔”;
我不知道如何正确表达这个问题,所以我举个例子。R 正在读取文本文件,该文件为;下一行以“分隔”;,r,import,read.table,R,Import,Read.table,我不知道如何正确表达这个问题,所以我举个例子。 假设我有一个.txt文件,其中第一行是日期,第二行是文本。然后模式重复,第三行是日期,第四行是文本。 如何将其读入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/
假设我有一个
.txt
文件,其中第一行是日期,第二行是文本。然后模式重复,第三行是日期,第四行是文本。
如何将其读入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
使用
Read.table
和sep=“\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")
你可以这样做:
MessyData <- read.table("Myfile.txt")
CleanData <- data.frame(DATE = MessyData[seq(1, length(MessyData), by = 2)],
TEXT = MessyData[seq(2, length(MessyData), by = 2)])
MessyData这里是使用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我不能让这个工作。第一行没有sep=“\n”
它在扫描时给我一个错误错误(file=file,what=what,sep=sep,quote=quote,dec=dec,:第6行没有3个元素。但是一旦我添加sep=“\n”
并运行第2行,它就会在seq.default中给我错误错误(2,长度(MessyData),by=2):错误登录“by”参数
是的,这正是我开始尝试读取文件的地方,但在我没有实际拥有文件的情况下,很难解决您在读取文件时遇到的任何问题。:-)至于添加sep=“\n”时仍然会出现的错误,可能是b/c您现在有了data.frame。你想把我答案中的“长度”改为“nrow”。这似乎是一个非常有创意的解决方案。你能解释一下它是如何工作的吗?我知道对于df[行,列]
。那么对于Row参数,c(T,F)
为什么起作用呢?我原以为这样做,你需要为每一行说明T/F?Thanks@jmich738TRUE
/FALSE
值被循环使用,因此无论行数多少,它都会自动选择备用行。你可以检查c(1:10)[c(真,假)]
和c(1:10)[c(假,真)]
来了解它是如何工作的。我说这可以扩展到任何尺寸df,对吗?换句话说,如果有3列必须使用前3行填写,我将替换ncol=3
?@jmich738是的,您是对的,并假设这些行是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)])
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")