根据列中的共同值将大型数据框拆分为数据框列表

2024-02-21

我有一个包含 10 列的数据框,收集“用户”的操作,其中一列包含一个 ID(不是唯一的,标识用户)(第 10 列)。数据帧的长度约为750000行。我正在尝试提取由包含“用户”标识符的列分割的各个数据帧(因此获取数据帧的列表或向量),以隔离单个参与者的操作。

ID | Data1 | Data2 | ... | UserID
1  | aaa   | bbb   | ... | u_001
2  | aab   | bb2   | ... | u_001
3  | aac   | bb3   | ... | u_001
4  | aad   | bb4   | ... | u_002

导致

list(
ID | Data1 | Data2 | ... | UserID
1  | aaa   | bbb   | ... | u_001
2  | aab   | bb2   | ... | u_001
3  | aac   | bb3   | ... | u_001
,
4  | aad   | bb4   | ... | u_002
...)

以下对于我的小样本(1000 行)非常有效:

paths = by(smallsampleMat, smallsampleMat[,"userID"], function(x) x)

然后例如通过 paths[1] 访问我想要的元素。

当应用到原始的大数据框架甚至矩阵表示时,这会阻塞我的机器(4GB RAM,MacOSX 10.6,R 2.15)并且永远无法完成(我知道存在更新的 R 版本,但我相信这不是主要问题)。

看来 split 的性能更高,并且需要很长时间才能完成,但我不知道(较差的 R 知识)如何将结果向量列表拼凑成矩阵向量。

path = split(smallsampleMat, smallsampleMat[,10]) 

我也考虑过使用big.matrix等等,但没有取得太大的成功来加快这一进程。


您可以使用例如轻松访问列表中的每个元素path[[1]]。您无法将一组矩阵放入原子向量中并访问每个元素。矩阵是具有维度属性的原子向量。我会使用返回的列表结构split,这就是它的设计目的。每个列表元素可以保存不同类型和大小的数据,因此它非常通用,您可以使用*apply函数对列表中的每个元素进行进一步操作。下面的例子。

#  For reproducibile data
set.seed(1)

#  Make some data
userid <- rep(1:2,times=4)
data1 <- replicate(8 , paste( sample(letters , 3 ) , collapse = "" ) )
data2 <- sample(10,8)
df <- data.frame( userid , data1 , data2 )

#  Split on userid
out <- split( df , f = df$userid )
#$`1`
#  userid data1 data2
#1      1   gjn     3
#3      1   yqp     1
#5      1   rjs     6
#7      1   jtw     5

#$`2`
#  userid data1 data2
#2      2   xfv     4
#4      2   bfe    10
#6      2   mrx     2
#8      2   fqd     9

使用以下方法访问每个元素[[像这样的运算符:

out[[1]]
#  userid data1 data2
#1      1   gjn     3
#3      1   yqp     1
#5      1   rjs     6
#7      1   jtw     5

或者使用*apply函数对每个列表元素执行进一步的操作。例如,取平均值data2您可以像这样使用 sapply 列:

sapply( out , function(x) mean( x$data2 ) )
#   1    2 
#3.75 6.25 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据列中的共同值将大型数据框拆分为数据框列表 的相关文章

  • R - 通过覆盖和递归合并列表

    假设我有两个带有名字的列表 a list a 1 b 2 c list d 1 e 2 d list a 1 b 2 b list a 2 c list e 1 f 2 d 3 e 2 我想递归地合并这些列表 如果第二个参数包含冲突的值 则
  • R:将 JSON 时间格式转换为 POSIX

    我有一个 JSON 字符串 并将其放入数据框中 我能够做到这一点 但我在使用 apply 函数之一将所有时间字符串转换为 POSIX 格式时遇到问题 See here https stackoverflow com questions 90
  • 会话重新启动后 AVcapture 会话启动缓慢

    我有一个主视图控制器 它连接到具有 avcapturesession 的第二个视图控制器 我第一次从主视图控制器转向捕获会话控制器 大约需要 50 毫秒 使用 仪器 检查 然后我从捕获会话返回到主视图控制器 然后从主控制器返回到 avcap
  • pandas DataFrame.join 的运行时间是多少(大“O”顺序)?

    这个问题更具概念性 理论性 与非常大的数据集的运行时间有关 所以我很抱歉没有一个最小的例子来展示 我有一堆来自两个不同传感器的数据帧 我需要最终将它们连接成两个very来自两个不同传感器的大数据帧 df snsr1 and df snsr2
  • 如何知道Matlab中系统命令执行过程中经过的时间?

    我有一个运行系统脚本的 Matlab 代码 该脚本可能会因命令运行而停止 我想知道是否有一种方法可以让程序知道它是否花费了很长时间并执行其他操作 这是代码 tic status cmdout system iperfcmd The prog
  • 如何在R中同时对三个字段进行网络分析

    如何在 R 中同时对三个字段进行网络分析 下面是示例数据以及desired output在最后一栏中 df lt data frame stringsAsFactors FALSE id 1 c ABC ABC BCD CDE DEF EF
  • 使用 dplyr::filter 的整洁方式是什么?

    使用下面的函数调用foo c b 输出以内联方式显示 正确的写作方式是什么df gt filter x gt x 我已经包含了一个使用的示例mutate以整洁的风格与之对比filter foo lt function variables x
  • 如何匹配 R 中的所有匹配项?

    我有 1000 个名字的列表 说A 我还有另外 5 个名字的清单 说B 我想找出这5个名字出现在1000个号码列表中的第几行 例如 Amy 在 A 中可以出现 25 次 B 里有艾米 我想知道 Amy 出现在 A 中的哪些行 我以前使用过
  • Pandas 组合不同索引的数据帧

    我有两个数据框df 1 and df 2具有不同的索引和列 但是 有一些索引和列重叠 我创建了一个数据框df索引和列的并集 因此不存在重复的索引或列 我想填写数据框df通过以下方式 for x in df index for y in df
  • 具有 dplyr、tidyverse 和 broom 的相关矩阵 - P 值矩阵

    全部 我想使用以下方法从相关矩阵中获取 p 值dplyr 和 或扫帚包 并同时测试多个变量 我知道其他方法 但 dplyr 对我来说似乎更简单 更直观 此外 dplyr 需要关联每个变量以获得特定的 p 值 这使得该过程更容易 更快 我检查
  • R 中的 Websocket

    我设法在 R 中建立到 Mtgox websocket 的连接 规格如下 url https socketio mtgox com mtgox Currency USD https socketio mtgox com mtgox Curr
  • 如果 PyPy 快 6.3 倍,为什么我不应该使用 PyPy 而不是 CPython?

    我已经听到很多关于PyPy http en wikipedia org wiki PyPy项目 他们声称它比现有技术快 6 3 倍CPython http en wikipedia org wiki CPython口译员开启他们的网站 ht
  • 如何从pandas中的多列计算多列

    我正在尝试使用函数从 pandas 数据框中的多个列计算多个列 该函数采用三个参数 a b 和 c 并返回三个计算值 sum prod 和 quot 在我的 pandas 数据框中 我有三个列 a b 和 c 我想从中计算列 sum pro
  • 非闪亮上下文中的反应式对象绑定

    实际问题 你怎样才能近似反应性环境 行为 http shiny rstudio com tutorial lesson6 建立者shiny http shiny rstudio com函数 或者甚至可能在一个函数中使用这些函数无光泽上下文以
  • R - tidyr - 变异并传播多列

    我在 R 中有以下数据框 my df test lt data frame V1 c 1 2 1 V2 c A B A V3 c S1 S1 S2 V4 c x x x V5 c y y y V6 c A B C V7 c D E F my
  • VBS 与 PowerShell:哪个更轻?

    如果我需要一个可以在系统中以最少的努力执行的脚本 我会选择哪个 通过查看任务管理器中的进程 内存 私有工作集 wscript exe 2 068Kpowershell exe 33 144K Thanks 这里存在工作守恒定律 如果机器做的
  • 从“parallel”包中的非基础 R 包调用函数,而无需在函数中将它们库化

    假设我正在尝试运行以下代码 library gregmisc library parallel myfunction lt function x combinations 10 x 1 10 cl lt makeCluster getOpt
  • for 循环中的 pandas isin 函数

    1 csv cut price depth carat table 0 Good 327 57 9 0 23 65 0 1 Good 335 63 3 0 31 58 0 2 Very Good 336 62 8 0 24 57 0 3 V
  • Pandas apply 与 np.vectorize 从现有列创建新列的性能

    我正在使用 Pandas 数据框 并希望创建一个新列作为现有列的函数 我还没有看到关于之间速度差异的很好的讨论df apply and np vectorize 所以我想我会在这里问 熊猫apply 功能很慢 根据我的测量 在一些实验中如下
  • 在Python中创建一个新表

    我正在尝试从数控机床中提取数据 事件每毫秒发生一次 我需要过滤掉一些用管道 分隔的变量分隔符 PuTTy exe 程序生成的日志文件 我尝试阅读熊猫 但列不在同一位置 df pd read table data log sep 日志文件的一

随机推荐

  • 当不使用字符串操作时,GCC 11 给出 -Wstringop-overflow

    这是我的代码 test c include
  • Swift 中的纯类协议

    我希望我的一些课程 不是全部 符合使用 仅限类的协议 https developer apple com library ios documentation Swift Conceptual Swift Programming Langua
  • 使用 MS Access 中的 GUID pk 插入 SQL Server 表

    我正在将数据库从 Access 后端迁移到 SQL Server 后端 同时保留 Access 前端 其中一张表设置了其 PK 的复制 ID 作为 Access DB 我们可以将值插入到该表中 而无需引用 PK 字段 因为 Access 会
  • 使用 jquery 选择最近的锚元素

    我有一张带有一个链接的表 如下所示 td a href class topiclink item Topic a td 我想选择 item topic的数据 我尝试使用 topiclink click function e var val
  • CoreData 无法完成以下错误:

    我有一个非常烦人的问题 我似乎无法解决 当我发送一条消息并保存到核心数据时 我有一个视图 完成后它会向数据库询问随机消息 句子 并将其保存到数据库中的另一行 如果我对最后一部分进行硬编码 而不从数据库中获取数据 那么它工作得很好 但是一旦我
  • 如何让 FTP-Simple 在 Visual Studio Code 中工作?

    我最近选择开始使用 Visual Studio Code 我想连接到远程服务器并直接在服务器上编辑文件 FTP Simple 似乎是一个很好的解决方案 但我很难理解该程序的一些基础知识 如果我连接到服务器 FTP Simple 是否会下载a
  • Service Worker 和 AppCache 的比较

    Service Worker 和 AppCache 之间的核心区别是什么 每种方法的优点和缺点是什么 何时更喜欢其中一种 主要区别在于 AppCache 是一个高级声明式 API 您可以使用它指定希望浏览器缓存的资源集 而 Service
  • 使用 Shibboleth 和 Google App Engine java 实现 SSO

    我正在开发一个应用程序谷歌应用引擎在Java中 在这个应用程序中我必须实现SSO using SAML2 我的谷歌应用程序引擎应用程序将充当服务提供商 而身份提供商将是一个单独的服务器 我只需编写 SSO 的 SP 端 我是 SAML 新手
  • 分离使用 python 多处理模块启动的子进程

    我想使用 python 中的 mutliprocessing 模块创建一个进程 但确保它在创建子进程的进程退出后继续运行 我可以使用 subprocess 模块和 Popen 获得所需的功能 但我想将代码作为函数而不是脚本运行 我想这样做的
  • 如何在 Mac 上更改 R 版本

    我正在尝试使用旧版本的 R 在 Mac 上运行包 在 Windows 上 常规 选项卡中有一个开关 但是 在 Mac RStudio 上找不到它 我参考了这个帖子 https support rstudio com hc en us art
  • 使用 gson 反序列化内部类返回 null

    我想使用 Gson 将 JSON 反序列化为对象 我已经定义了适当的类 其中一些类的对象包含在其他对象中 当尝试反序列化整个 JSON 时 我得到了空值 因此我开始将其分解 我达到了所有较低类都站在自己一边的地步 但是当尝试反序列化为包含该
  • 从 UserAgent 字符串创建 HttpBrowserCapabilityBase

    So the Http请求库 http msdn microsoft com en us library system web httprequestbase aspx类有一个浏览器属性 http msdn microsoft com en
  • Azure Devops - 更新 json 文件 - powershell 脚本

    我创建了 powershell 脚本来使用变量更新 json 文件 Json 文件位于 Azure Devops 存储库中 json 文件名为 var json 我将在 azure devops 中使用此解决方案 因此我构建了管道并在 az
  • WebGet 在功能上等同于 WebInvoke(Method = "GET") 吗?

    This https stackoverflow com questions 1072556 wcf webgetattribute vs webinvokeattribute问题已经问了我要问的问题 但我想对答案进行一些澄清 答案指出We
  • java中如何将列表数据转换为json

    我有一个函数将数据返回为List在java类中 现在根据我的需要 我必须将其转换为Json Format 下面是我的函数代码片段 public static List
  • 计算另一个计数结果出现的次数

    我们有一张表叫做entries它根据日期存储用户信息 用户每天只能进入数据库一次 一些示例数据 id email date 1 email protected cdn cgi l email protection 04 09 13 2 em
  • Zend Framework 中的国家、省份、城市、产品路由

    这个url结构是为了SEO优化而提出的 所以建议另一种结构是行不通的 提议的结构是 example com
  • 通过正则表达式对传入进行分类引起:Application_NewMail:字节值不匹配

    我正在使用 Outlook 2010 的 VBA 宏来过滤传入的电子邮件并将其分类到不同的文件夹中 该规则在目标中提到 在实现和测试时 它确实提示错误消息框 而不是成功过滤 请告诉我默认呼叫下的哪个部分Application NewMail
  • 类似 Google 的搜索查询标记化和字符串分割

    我正在寻找类似于谷歌的做法来标记搜索查询 例如 如果我有以下搜索查询 the quick brown fox jumps over the lazy dog 我想要一个包含以下标记的字符串数组 the quick brown fox jum
  • 根据列中的共同值将大型数据框拆分为数据框列表

    我有一个包含 10 列的数据框 收集 用户 的操作 其中一列包含一个 ID 不是唯一的 标识用户 第 10 列 数据帧的长度约为750000行 我正在尝试提取由包含 用户 标识符的列分割的各个数据帧 因此获取数据帧的列表或向量 以隔离单个参