在 R 中读取和过滤具有不同列数量的 .DAT 文件
read and filter a .DAT file with different column amount in R
我有一个 .dat
包含测量值的文件。其中一些数据是“损坏的”。应跳过损坏数据所在的行。包含损坏数据的行的列数超过 6 或低于 6。但是我只需要包含 6 列的行。
所以我尝试用 data.table
在 R 中读取文件 Daten2.DAT
。 (see Image)
有人知道我如何跳过列数不等于 6 的行吗?
不使用 data.table::fread
读取数据,而是使用 readLines
读取数据,用逗号分隔行,然后解析行。
ncols <- 6
y <- readLines(con = "Daten2.DAT")
y <- strsplit(y, ",")
y <- lapply(y, function(line_read){
if(length(line_read) != ncols) NULL else line_read
})
y <- y[!sapply(y, is.null)]
df1 <- do.call(rbind.data.frame, y)
names(df1) <- paste0("Col", seq_len(ncols))
这假定文件中没有第 headers 列的第一行。
我有一个 .dat
包含测量值的文件。其中一些数据是“损坏的”。应跳过损坏数据所在的行。包含损坏数据的行的列数超过 6 或低于 6。但是我只需要包含 6 列的行。
所以我尝试用 data.table
在 R 中读取文件 Daten2.DAT
。 (see Image)
有人知道我如何跳过列数不等于 6 的行吗?
不使用 data.table::fread
读取数据,而是使用 readLines
读取数据,用逗号分隔行,然后解析行。
ncols <- 6
y <- readLines(con = "Daten2.DAT")
y <- strsplit(y, ",")
y <- lapply(y, function(line_read){
if(length(line_read) != ncols) NULL else line_read
})
y <- y[!sapply(y, is.null)]
df1 <- do.call(rbind.data.frame, y)
names(df1) <- paste0("Col", seq_len(ncols))
这假定文件中没有第 headers 列的第一行。