Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.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 基于组不变列值的条件分组_R_Dplyr_Grouping - Fatal编程技术网

R 基于组不变列值的条件分组

R 基于组不变列值的条件分组,r,dplyr,grouping,R,Dplyr,Grouping,我有一个数据框: temp = as.data.frame(matrix(c(1,2,2,-3,1,1,2,3,-2,0,2,1,-5,1,1,2,1,3,0,0,3,2,4,-1,1,3,2,2,0,1,3,2,4,3,0), ncol=5,byrow = TRUE)) colnames(temp) = c("ID","srch","utility","reutility","code") 我需要按ID列分组。对于任何ID值,srch列保持不变。对于每个组,如果srch>1,我需要minut

我有一个数据框:

temp = as.data.frame(matrix(c(1,2,2,-3,1,1,2,3,-2,0,2,1,-5,1,1,2,1,3,0,0,3,2,4,-1,1,3,2,2,0,1,3,2,4,3,0), ncol=5,byrow = TRUE))
colnames(temp) = c("ID","srch","utility","reutility","code")
我需要按ID列分组。对于任何ID值,srch列保持不变。对于每个组,如果srch>1,我需要minutility,其中code==1-maxreutility,其中code==0,否则,即如果srch假设ID=2的输出为0,我们可以:

library(dplyr)

temp %>%
  group_by(ID) %>%
  summarise(Val = if(first(srch) > 1) min(utility[code == 1]) - 
                                      max(reutility[code == 0]) else 0)

# A tibble: 3 x 2
#     ID   Val
#  <dbl> <dbl>
#1     1     4
#2     2     0
#3     3    -1

嗨,Tecsanto。我认为你提供了一个最小的可执行示例是非常好的。不幸的是,它没有执行。您试图在一个包含4列的data.frame上设置5个ColName…嗨,Dario,请原谅我的错误。现在请检查我修改的ncol=5,ID=2不应该是0吗?但是对于ID=2,srch==1…你说如果它是1,那么你需要它是0。。。否则,如srchSorry sotos。你说得对。我弄糊涂了。应该是0。编辑它
library(dplyr)

temp %>%
  group_by(ID) %>%
  summarise(Val = if(first(srch) > 1) min(utility[code == 1]) - 
                                      max(reutility[code == 0]) else 0)

# A tibble: 3 x 2
#     ID   Val
#  <dbl> <dbl>
#1     1     4
#2     2     0
#3     3    -1