我正在导入大量数据集。所有这些都在顶部(标题之前)有一些空行,但是它并不总是与我需要跳过的行数相同。
现在我正在使用:
df2 <- read_delim("filename.xls",
"\t", escape_double = FALSE,
guess_max=10000,
locale = locale(encoding = "ISO-8859-1"),
na = "empty", trim_ws = TRUE, skip = 9)
但有时我只需跳过3行fx。
我可以以某种方式设置一条规则,当我的列B(在Excel中)在句子开头包含以下单词之一时:
Datastatistik
Overførte记录
FI-CA
Oprettet
A列始终为空,但我在导入后在代码中将其删除。
这是我的数据示例(我隐藏了个人号码):
我的第一个变量标题叫做“ Bilagsnummer ”或“ Bilagsnr。”。 我不知道是否可以设置一个规则,说明这个单词的第一次出现就是我的标题?真的我只是在这里集思广益,因为我不知道如何自动化这个数据导入。
--- --- EDIT
我看了@Bram链接的帖子,它确实解决了我的一些问题。
我改变了一些。 这是我使用的代码:
temp <- readLines("file.xls")
skipline <- which(grepl("\tDatastatistik", temp) |
grepl("\tOverførte", temp) |
grepl("FI-CA", temp) |
grepl("Oprettet", temp) |
temp == "")
所以我制作的 skipline 整数包含了那些需要跳过的行。这些都是正确的使用grepl函数(因为句子末尾的措辞不时变化)。
现在,我仍然有问题。 当我在 read.delim 中使用 skip = skipline 时,它仅适用于第一行。
我收到警告信息:
In if (skip > 0L) readLines(file, skip) :
the condition has length > 1 and only the first element will be used
答案 0 :(得分:0)
可能找到了解决方案,但不是最佳解决方案。我们来看看。
用空行导入你的df:
df2 <- read_delim("filename.xls",
"\t", escape_double = FALSE,
guess_max=10000,
locale = locale(encoding = "ISO-8859-1"),
na = "empty", trim_ws = TRUE)
在开头找到空行数:
NonNAindex <- which(!is.na(df2[,2]))
lastEmpty <- (min(NonNAindex)-1)
使用该信息重新导入您的文档:
df2 <- read_delim("filename.xls",
"\t", escape_double = FALSE,
guess_max=10000,
locale = locale(encoding = "ISO-8859-1"),
na = "empty", trim_ws = TRUE, skip = lastEmpty)