删除R中的CSV文件的页脚

问题描述 投票:1回答:2

我想在导入到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

谢谢

r footer
2个回答
0
投票

这是一个删除页脚之后(和包括)页脚的每一行的函数:

removeFooter <- function(df) {
    df[cumsum(grepl("Footnotes", df$A)) < 1,]
}

grepl返回一个逻辑向量,其长度与df的行数相同,并且在包含“Footnotes”的行中包含一个TRUEcumsum将逻辑向量强制转换为零和1的数字向量,并返回一个运行总计。 “Footnotes”之前的所有行都是零,后面的所有行都是1。


0
投票

你对if语句和length位过于复杂。我们找到包含“Footnotes”的第一行的行号,减去1和子集。

df2 <- df[1:min(grep("Footnotes",df$A)) -1, ]
© www.soinside.com 2019 - 2024. All rights reserved.