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