我想在导入到R之后删除一些具有不同长度的CSV文件的页脚。在所有文件中,页脚以包含“脚注:”的单元格开头。作为数据的简单示例,如果列名是A,B和C,我想保留第一行(1,2,3)并删除其他两行:“Footnotes:”和“Blah Blah Blah”
A B C
1 2 3
Footnotes:
Blah Blah Blah
我不知道grep为什么不做这个工作:
df <- read.table("df.csv", header = TRUE,sep = ",",
quote = "\"",dec = ".", fill = TRUE, comment.char = "")
if(length(grep("Footnotes:",df))>0){
df<-df[-c(grep("Footnotes:",df):length(df))]
}
以下是CSV文件简单版本的链接:enter link description here
谢谢
这是一个删除页脚之后(和包括)页脚的每一行的函数:
removeFooter <- function(df) {
df[cumsum(grepl("Footnotes", df$A)) < 1,]
}
grepl
返回一个逻辑向量,其长度与df
的行数相同,并且在包含“Footnotes”的行中包含一个TRUE
。 cumsum
将逻辑向量强制转换为零和1的数字向量,并返回一个运行总计。 “Footnotes”之前的所有行都是零,后面的所有行都是1。
你对if
语句和length
位过于复杂。我们找到包含“Footnotes”的第一行的行号,减去1和子集。
df2 <- df[1:min(grep("Footnotes",df$A)) -1, ]