相关疑难解决方法(0)

为什么plyr这么慢?

我想我正在使用plyr错误.有人可以告诉我这是否是"高效"的plyr代码?

require(plyr)
plyr <- function(dd) ddply(dd, .(price), summarise, ss=sum(volume)) 
Run Code Online (Sandbox Code Playgroud)

一点背景:我有一些大的聚合问题,我注意到他们每个人都花了一些时间.在尝试解决问题时,我开始对R中各种聚合过程的性能感兴趣.

我测试了一些聚合方法 - 并且发现自己整天都在等待.

当我最终得到结果时,我发现了plyr方法和其他方法之间的巨大差距 - 这让我觉得我做错了.

我运行了以下代码(我以为我在查看时会查看新的数据帧包):

require(plyr)
require(data.table)
require(dataframe)
require(rbenchmark)
require(xts)

plyr <- function(dd) ddply(dd, .(price), summarise, ss=sum(volume)) 
t.apply <- function(dd) unlist(tapply(dd$volume, dd$price, sum))
t.apply.x <- function(dd) unlist(tapply(dd[,2], dd[,1], sum))
l.apply <- function(dd) unlist(lapply(split(dd$volume, dd$price), sum))
l.apply.x <- function(dd) unlist(lapply(split(dd[,2], dd[,1]), sum))
b.y <- function(dd) unlist(by(dd$volume, dd$price, sum))
b.y.x <- function(dd) unlist(by(dd[,2], dd[,1], sum))
agg <- function(dd) aggregate(dd$volume, list(dd$price), sum)
agg.x <- function(dd) aggregate(dd[,2], list(dd[,1]), sum)
dtd <- function(dd) …
Run Code Online (Sandbox Code Playgroud)

r plyr dataframe data.table

58
推荐指数
1
解决办法
5773
查看次数

合并重复的行

我有一个数据框,其中一列是物种的名称,第二列是丰度值.由于采样程序,一些物种出现不止一次(即,其中有多个物种,其中有物种X).我想巩固这些条目并总结它们的丰富程度.

例如,给定此数据框:

set.seed(6)
df=data.frame(
  x=c("sp1","sp2","sp3","sp3","sp4","sp2","sp3"),
  y=rpois(7,2)); df
Run Code Online (Sandbox Code Playgroud)

产生:

    x y
1 sp1 2
2 sp2 4
3 sp3 1
4 sp3 1
5 sp4 3
6 sp2 5
7 sp3 5
Run Code Online (Sandbox Code Playgroud)

我想改为:

    x y
1 sp1 2    
2 sp2 9     (5+4)
3 sp3 7     (5+1+1)
5 sp4 3
Run Code Online (Sandbox Code Playgroud)

提前感谢您提供的任何帮助!

r

35
推荐指数
5
解决办法
4万
查看次数

R:检查一组变量是否形成唯一索引

我有一个大数据框,我想检查一组(因子)变量的值是否唯一标识数据的每一行。

我目前的策略是按我认为是索引变量的变量进行聚合

dfAgg = aggregate(dfTemp$var1, by = list(dfTemp$var1, dfTemp$var2, dfTemp$var3), FUN = length)
stopifnot(sum(dfAgg$x > 1) == 0)
Run Code Online (Sandbox Code Playgroud)

但这个策略需要永远。更有效的方法将不胜感激。

谢谢。

r data.table

4
推荐指数
1
解决办法
1026
查看次数

在St中标记R中的所有重复行

从我的问题的后续行动在这里,我想R中复制的Stata命令的功能duplicates tag,这让我标记的数据集是在重复一组给定的变量条件的所有行:

clear *
set obs 16
g f1 = _n
expand 104
bys f1: g f2 = _n
expand 2
bys f1 f2: g f3 = _n
expand 41
bys f1 f2 f3: g f4 = _n
des  // describe the dataset in memory

preserve
sample 10  // draw a 10% random sample
tempfile sampledata
save `sampledata', replace
restore

// append the duplicate rows to the data
append using `sampledata'
sort f1-f4

duplicates tag f1-f4, …
Run Code Online (Sandbox Code Playgroud)

r plyr stata data.table

4
推荐指数
1
解决办法
1877
查看次数

标签 统计

r ×4

data.table ×3

plyr ×2

dataframe ×1

stata ×1