【问题标题】:How to delete all rows in R until a certain value如何删除R中的所有行直到某个值
【发布时间】:2014-05-25 17:14:45
【问题描述】:

我有几个以一些文本开头的数据框。有时我需要的信息从第 11 行开始,有时从第 16 行开始。它改变。所有数据框的共同点是有用信息在标题为“位置”的一行之后开始。

我想做一个循环删除数据框中有用信息上方的所有行(包括带有“位置”的行)。

【问题讨论】:

  • 欢迎来到 StackOverflow!请阅读有关如何ask a question 以及如何生成minimal reproducible example 的信息。至少发布一些示例数据总是好的(也许给出一个你认为输出应该是什么的例子)。还可以分享您迄今为止尝试过的任何代码。这将使其他人更容易帮助您。

标签: r row


【解决方案1】:

我猜你想要这样的东西:

readfun <- function(fn,n=-1,target="location",...) {
   r <- readLines(fn,n=n)
   locline <- grep(target,r)[1]
   read.table(fn,skip=locline,...)
}

这是相当低效的,因为它读取数据文件两次(一次作为原始字符串,一次作为数据框),但如果您的文件不太大,它应该可以正常工作。 (@MrFlick 在 cmets 中指出,如果你有一个合理的上限来确定你的目标会出现多远,你可以设置 n 这样你就不必阅读整个文件来搜索目标。)

我不知道您文件的任何其他详细信息,但使用"^location" 来标识以该字符串或其他更具体的目标开始 的行可能更安全。 .

【讨论】:

  • 这可能效率低下,但比先将其作为 data.frame 读取然后删除要好得多,因为这会扰乱列类的检测。如果您知道位置总是出现在某一行之前(比如 20),那么您可以设置 readlines(fn, n=20) 以避免读取整个文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-23
  • 2012-11-07
  • 2020-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多