小编Gue*_*290的帖子

查找矢量化方式以在行之间进行计算来执行for循环

我正在尝试找到一个可以替换以下代码的向量化过程(这需要长时间才能运行):

for (i in 2:nrow(z)) {
  if (z$customerID[i]==z$customerID[i-1]) 
     {z$timeDelta[i]<-(z$time[i]-z$time[i-1])} else {z$timeDelta[i]<- NA}
}
Run Code Online (Sandbox Code Playgroud)

我试着寻找不同的应用片段,但没有发现任何有用的东西.

这是一些示例数据:

customerID    time
    1         2013-04-17 15:30:00 IDT
    1         2013-05-19 11:32:00 IDT
    1         2013-05-20 10:14:00 IDT
    2         2013-03-14 18:41:00 IST
    2         2013-04-24 09:52:00 IDT
    2         2013-04-24 17:08:00 IDT
Run Code Online (Sandbox Code Playgroud)

我想获得以下输出:

customerID    time                        timeDelta*
    1         2013-04-17 15:30:00 IDT     NA
    1         2013-05-19 11:32:00 IDT     31.83 
    1         2013-05-20 10:14:00 IDT     0.94 
    2         2013-03-14 18:41:00 IST     NA
    2         2013-04-24 09:52:00 IDT     40.59
    2         2013-04-24 17:08:00 IDT     0.3 

 *I …
Run Code Online (Sandbox Code Playgroud)

r

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

为什么mutate()按组继续?

我有一个2.5M x 13矩阵,我试图通过ID变量聚合.起初我尝试使用ddply,但我的记忆爆炸了.之后我尝试使用data.table,它运行得更快:

data <- as.data.table(data)
key(data) <- "ID"

agg<-mydata[,mutate(.SD,
           start = min(Date))
           , by = ID]
Run Code Online (Sandbox Code Playgroud)

现在没有内存问题,到目前为止,在具有4.0GB内存的英特尔i5 2.50GHz上运行它需要超过4个小时.操作系统是windows 7,所以没有并行计算.

我究竟做错了什么?

aggregate r data.table

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

比较R中的多维列表

我有以下两个清单:

First list:
[[1]]
[1] "ab" "iew"  "rer" "fdd"     
[[2]]
[1] "ff" "de 
[[3]]
[1] "cc"

Second list:
[[1]]
[1] "iew" "vfr" 
[[2]]
[1] "ff" "cdc"
[[3]]
[1] "vf" "cde"
Run Code Online (Sandbox Code Playgroud)

我的目标是比较这两个多维列表,结果将是:

[[1]]
[1] FALSE TRUE FALSE FALSE 
[[2]]
[1] TRUE FALSE
[[3]]
[1] FALSE
Run Code Online (Sandbox Code Playgroud)

预先形成此intersect()函数的最佳矢量化方法是什么?

r vectorization

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

在R中连接字符串

我有以下清单.

l=list("home car train", "remote TV helicopter", "grenade hello")
Run Code Online (Sandbox Code Playgroud)

我的目标是按字母顺序设置列表中每个项目的单词.意思是,在这种情况下请求的结果将是:

"car home train", "helicopter TV remote", "hello grenade"
Run Code Online (Sandbox Code Playgroud)

起初我使用strsplit分隔每个字符串中的单词:

l2<-lapply(l,function(x){as.character(sort(unlist(strsplit(as.character(x), "\\ "))))})
Run Code Online (Sandbox Code Playgroud)

在此步骤之后,我不确定如何将每个项目的不同排序值连接到请求的列表格式.(到目前为止,粘贴功能没有运气)

r

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

标签 统计

r ×4

aggregate ×1

data.table ×1

vectorization ×1