首页 > 解决方案 > 删除 R 数据表中重复标题行的更简单方法

问题描述

我有一个df每 12 行重复的标题行,这是在 ESPN 网站上抓取 MLB 投球统计数据的遗产。我知道我可以像这样简单地删除它们:

12  RK  PLAYER  TEAM GP GS IP H R ER BB SO W L  SV  BLSV WAR WHIP ERA
...
24  RK  PlAYER  etc...

df <- df[c(-12, -24, -36, -48, -etc), ]

这似乎效率低下,因为我df的行数超过一千行。如何删除这些标题行而不必输入从 12 到 Timbuktu 的每个数字?

标签: rdplyrrow

解决方案


创建一个序列seq并使用它来删除行

df[-seq(12, nrow(df), by = 12),] 

如果是data.table对象,,则不需要

library(data.table)
df[-seq(12, .N, by = 12)]

或使用dplyr

library(dplyr)
df %>% 
   slice(-seq(12, n(), by = 12))

根据 OP 的评论,目的是删除从此处读取的数据中的重复标头。

删除 RK 列值为 'RK' 的行(指定标题行)

df <- df[df$RK != "RK",] 

然后更改type列的

df[] <- lapply(df, function(x) type.convert(as.character(x), as.is = TRUE))

推荐阅读