gpt4 book ai didi

r - ddply 在 R 中拆分大量类别的问题

转载 作者:行者123 更新时间:2023-12-01 11:04:13 25 4
gpt4 key购买 nike

我最近问了一个关于计算元素自身重复次数的问题 (http://stackoverflow.com/questions/7669553/how-to-assign-number-of-repeats-to-dataframe-based- on-elements-of-an-identifying/7669607#7669607) 在大型数据框中。我收到了一些非常有用的建议,这些建议适用于少量行,但现在需要在更大的级别上执行操作(超过 255k 行,使用 ddply 形成大约 100k 个“组”):

system.time( data <- ddply(data, "uid", function(x) {x$time <- 1:nrow(x); x}) ) #uid is the grouping variable, for which I need to count the number of repeats for output like

uid time
ny1 1
ny1 2
ny2 1
ny2 2
ny2 3

尝试对更大的数据集执行此操作会导致 R 由于内存问题而阻塞。有什么明显的解决方案吗?在此先感谢(特别是耐心等待,因为我是一个新的“程序员”)。

最佳答案

对于像这样真正大的问题,您可以尝试使用 data.table 而不是 plyr:

library(data.table)
data <- data.table(data)

data[,transform(.SD,time = NROW(.SD)), by = uid]

假设 time 列不存在。

我仍在学习 data.table 的过程中,所以当我修改它时,它似乎更简单(也许更快):

data[,rep(.N, .N),by = uid]

.N 似乎是一个内部变量,表示每个子组的行数。

关于r - ddply 在 R 中拆分大量类别的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7734752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com