r - R数据框中行的子集
问题描述
我目前正在从网络上抓取一些数据,数据示例如下所示:
col_a | col_b | col_c | col_d
1 | 2 | 44 | home1
1 | 3 | 44 | home1
1 | 7 | 44 | home1
1 | 5 | 44 | home1
1 | 2 | 44 | home1
1 | 3 | 44 | home1
1 | 7 | 44 | home1
1 | 5 | 44 | home1
2 | 8 | 42 | home1
2 | 6 | 42 | home1
2 | 4 | 42 | home1
2 | 1 | 42 | home1
如上例所示,共有 12 行。正确的数据应该只有 8 行数据,使用“col_a”作为参考,每个唯一的“col_a”应该只有 4 行。因此,在这种情况下,第 5 到第 8 行是第 1 到第 4 行的副本。话虽如此,抓取的数据有 100,000 多行,并且这种重复发生在各处。有没有办法只保留每个唯一“col_a”的前 4 行?除了遍历每一行之外,我想不出一种有效的方法。
解决方案
您可以通过以下方式获得 col_a 中的不同值:
col_a_unique <- unique(data$col_a)
然后最终循环它并只保留每个的前四个:
for (a in col_a_unique)
{
to_keep=data[which(data$col_a==a),][1:4]
}
wihch()
将仅选择满足等式的行,即与 col_a 上的给定值相对应的所有元素,然后[1:4]
选择前四个元素。
然后,您需要创建一个适当的对象来存储to_keep
每个循环步骤。
这是一个详细的方法,还有更简洁的方法。
推荐阅读
- laravel - 我怎样才能通过 eloquent 和 group by 获取所有日期,甚至是没有记录的日期?
- bots - 根据对嵌入的反应为新用户添加经过验证的角色
- php - 内存不足时如何重启 HTTPD 服务器?
- python - 使用不同于 utf8 的编码从 Python 写入数据库
- kotlin - 无法提供来自子组件的依赖
- ember.js - 我应该从 LTS 升级到另一个 LTS ember 版本吗?
- sql - 对 hive 中的特定列进行 GROUP BY
- django - django 无法将所有事件保存在数据库中
- python - 删除列表中的模式
- javascript - 网站加载后如何触发按键组合?