替代R中的子集

亚历克斯

我有一个DF,YearHT,650万x 55列。有一些我想提取和添加的特定信息,但仅基于汇总值。我正在使用for循环将大df子集化,然后执行计算。

我听说应该避免for循环,而且我想知道是否有一种方法可以避免使用for循环,因为当我运行此查询时,它需要3个小时左右的时间。

这是我的代码:

srt=NULL
for(i in doubletCounts$Var1){
    s=subset(YearHT,YearHT$berthlet==i)
    e=unlist(c(strsplit(i,'\\|'),median(s$berthtime)))
    srt=rbind(srt,e)
}
srt=data.frame(srt)
s2=data.frame(srt$X2,srt$X1,srt$X3)
colnames(s2)=colnames(srt)
s=rbind(srt,s2)

doubletCounts是700 x 3 df,并且每个值都在大df中找到。

我很高兴听到任何优化/加快此过程的想法。

拉法佩雷拉

这是一个使用的快速解决方案data.table,尽管您的问题尚不清楚,您output想要得到什么。

# load library
  library(datat.table)

# convert your dataset into data.table
  setDT(YearHT)

# subset YearHT keeping values that are present in doubletCounts$Var1
  YearHT_df <- YearHT[ berthlet %in% doubletCounts$Var1]

# aggregate values 
  output <-   YearHT_df[ , .( median= median(berthtime)) ]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档