Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在特定条件下使用带R的Aggregate()函数聚合行,而不使用dplyr_R_Aggregate_Vectorization - Fatal编程技术网

在特定条件下使用带R的Aggregate()函数聚合行,而不使用dplyr

在特定条件下使用带R的Aggregate()函数聚合行,而不使用dplyr,r,aggregate,vectorization,R,Aggregate,Vectorization,我想在某些条件下聚合表中的行。例如,我有: x您可以使用by do.call(rbind, by(x, x$id, function(x) {i <- cbind(x, d=c(1, diff(x[, 3]))); i[i$d > 0, 1:2]})) # id value # 1 T 5 # 2 R 10 # 3 R -5 do.call(rbind,by(x,x$id,函数(x){i0,1:2]})) #id值 #1吨5 #2 R 10 #3 R-

我想在某些条件下聚合表中的行。例如,我有:


x您可以使用
by

do.call(rbind, by(x, x$id, function(x) {i <- cbind(x, d=c(1, diff(x[, 3]))); i[i$d > 0, 1:2]}))
#   id value
# 1  T     5
# 2  R    10
# 3  R    -5
do.call(rbind,by(x,x$id,函数(x){i0,1:2]}))
#id值
#1吨5
#2 R 10
#3 R-5
或:

x
x <- data.frame("id"=c("T","T","R","R"),"value"=c(10,-5,10,-5),"level"=c(3,2,1,2))

lookup_vec <- setNames(x[sign(x$value) == 1, ]$level,
                       as.character(x[sign(x$value) == 1, ]$id))
x$level_plus <- lookup_vec[as.character(x$id)]
x$level_plus <- ifelse(x$level_plus >= x$level, x$level_plus, x$level)
aggregate(value ~ id + level_plus, x, sum)[c("id", "value")]
# id value
# 1  R    10
# 2  R    -5
# 3  T     5