r - 如何从 R 中的数据框中列出共享共同值的键?
问题描述
我有一个包含两列的大型数据框(3M 行):key
和value
,并且我想创建一个向量列表(或任何类似的数据结构),其中元素的数量与不同的数量一样多value
,这样列表的元素 k 是key
其向量value
为 k。
# original dataframe:
df
# key value
# 4 a
# 2 a
# 3 k
# 12 a
# expected output:
list
# $`a`
# [1] 4 2 12
#
# $`k`
# [1] 3
我尝试了一个循环,但它非常慢(处理 1M 行需要 6 个小时,我把它停在那里)。有没有更有效的方法?
解决方案
这由 dplyrgroup_rows
和group_data
分组数据的方法处理:
library(dplyr)
grp_df <- group_by(mtcars, gear)
group_rows(grp_df)
#[[1]]
# [1] 4 5 6 7 12 13 14 15 16 17 21 22 23 24 25
#
#[[2]]
# [1] 1 2 3 8 9 10 11 18 19 20 26 32
#
#[[3]]
#[1] 27 28 29 30 31
group_data(grp_df)
## A tibble: 3 x 2
# gear .rows
# <dbl> <list>
#1 3 <int [15]>
#2 4 <int [12]>
#3 5 <int [5]>
推荐阅读
- c - 打印算法:当值 [index] = 0x00 时,十六进制数组 printf 中断
- python - Tensorflow:相同结构的梯度和损失存在差异
- c++ - 如何确定特定状态在 boost-msm 中是否处于活动状态?
- php - 使用 Eden Imap 库的电子邮件正文中的附件和图像
- git - Git找不到标签所属的分支
- authentication - ASP.NET Core 2.1,没有本地身份的外部登录
- publish - 尽管进行了品牌验证,但无法发布 Dialogflow 机器人
- python - Python Flask 将大文件发布到 api
- php - 在数据库中保存文本和图像时出现未定义变量错误。如何解决?
- html - 输入 type="date",显示周数