r - 删除 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 的每个数字?
解决方案
创建一个序列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))
推荐阅读
- c++ - C++98模板类静态成员初始化?
- java - 使用 Springboot 将两个列表添加到 Response
- c# - 使用 C# 使用带有 PosExplorer Opos SDK.Net 的打印机的 IP 地址
- podman - 为什么我不能在这个目录上做 podman unshare
- python - 将 ORM 展平和重新映射到 Pydantic 模型的最佳方法
- python - 来自 Microsoft Exchange Online Protection 的数据的 API 端点?
- amazon-web-services - 是否有用于获取 AWS 服务的当前请求令牌桶大小和重新填充率的 AWS API?
- cassandra - Cassandra:需要 2 个,但只需要 1 个活动和 3 个副本,但只有 2 个确认写入
- sql - T-SQL 组合具有相同 ID 的 XML 列
- binance - Binance api oco 订单未发送