相关疑难解决方法(0)

R:加快"分组"操作

我有一个模拟,有一个巨大的聚合,并在中间组合步骤.我使用plyr的ddply()函数对这个过程进行了原型设计,这对我的大部分需求非常有用.但是我需要这个聚合步骤更快,因为我必须运行10K模拟.我已经在并行缩放模拟,但如果这一步更快,我可以大大减少我需要的节点数量.

这是对我要做的事情的合理简化:

library(Hmisc)

# Set up some example data
year <-    sample(1970:2008, 1e6, rep=T)
state <-   sample(1:50, 1e6, rep=T)
group1 <-  sample(1:6, 1e6, rep=T)
group2 <-  sample(1:3, 1e6, rep=T)
myFact <-  rnorm(100, 15, 1e6)
weights <- rnorm(1e6)
myDF <- data.frame(year, state, group1, group2, myFact, weights)

# this is the step I want to make faster
system.time(aggregateDF <- ddply(myDF, c("year", "state", "group1", "group2"),
                     function(df) wtd.mean(df$myFact, weights=df$weights)
                                 )
           )
Run Code Online (Sandbox Code Playgroud)

所有提示或建议表示赞赏!

performance r plyr

36
推荐指数
5
解决办法
8099
查看次数

映射数据帧的行

假设我有列C1,...,CN和函数f,它接受这个数据帧作为参数的列的数据帧.如何将f应用于数据帧的每一行以获得新的数据帧?

例如,

x = data.frame(letter=c('a','b','c'), number=c(1,2,3))
# x is
# letter | number
#      a | 1
#      b | 2
#      c | 3

f = function(letter, number) { paste(letter, number, sep='') }

# desired output is
# a1
# b2
# c3
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?我猜它是{s,l,t}应用(x,f)的东西,但我无法弄明白.

r

10
推荐指数
2
解决办法
1万
查看次数

标签 统计

r ×2

performance ×1

plyr ×1