基于2条语句对R(dplyr包)中的组进行计数
我想知道是否可以使用dplyr计算访问次数。每次经过的时间超过30次或物种发生变化时,即定义访问 我试着按物种对它们进行分组基于2条语句对R(dplyr包)中的组进行计数,r,dplyr,R,Dplyr,我想知道是否可以使用dplyr计算访问次数。每次经过的时间超过30次或物种发生变化时,即定义访问 我试着按物种对它们进行分组 visit <- rawdata %>% group_by(Species)%>% mutate(VisitNo = cumsum(Elapsed >= 30) 预期产量 Species Elapsed VisitNo aardvark 5 1 aardvark 10 1 aard
visit <- rawdata %>%
group_by(Species)%>%
mutate(VisitNo = cumsum(Elapsed >= 30)
预期产量
Species Elapsed VisitNo
aardvark 5 1
aardvark 10 1
aardvark 2 1
aardvark 30 2
aardvark 4 2
aardvark 30 3
aardvark 10 3
Jackal 5 4
Jackal 30 5
Impala 5 5
Impala 30 6
谢谢你的帮助 您可以执行以下操作:
df %>%
mutate(VisitNo = cumsum(!duplicated(Species) | Elapsed >= 30))
Species Elapsed VisitNo
1 aardvark 5 1
2 aardvark 10 1
3 aardvark 2 1
4 aardvark 30 2
5 aardvark 4 2
6 aardvark 30 3
7 aardvark 10 3
8 Jackal 5 4
9 Jackal 30 5
10 Impala 5 6
11 Impala 30 7
你可以做:
df %>%
mutate(VisitNo = cumsum(!duplicated(Species) | Elapsed >= 30))
Species Elapsed VisitNo
1 aardvark 5 1
2 aardvark 10 1
3 aardvark 2 1
4 aardvark 30 2
5 aardvark 4 2
6 aardvark 30 3
7 aardvark 10 3
8 Jackal 5 4
9 Jackal 30 5
10 Impala 5 6
11 Impala 30 7
另一种选择:
library(dplyr)
df %>%
mutate(VisitNo = cumsum(Species != lag(Species, default = last(Species)) |
Elapsed >= 30))
# Species Elapsed VisitNo
#1 aardvark 5 1
#2 aardvark 10 1
#3 aardvark 2 1
#4 aardvark 30 2
#5 aardvark 4 2
#6 aardvark 30 3
#7 aardvark 10 3
#8 Jackal 5 4
#9 Jackal 30 5
#10 Impala 5 6
#11 Impala 30 7
与data.table类似
另一种选择:
library(dplyr)
df %>%
mutate(VisitNo = cumsum(Species != lag(Species, default = last(Species)) |
Elapsed >= 30))
# Species Elapsed VisitNo
#1 aardvark 5 1
#2 aardvark 10 1
#3 aardvark 2 1
#4 aardvark 30 2
#5 aardvark 4 2
#6 aardvark 30 3
#7 aardvark 10 3
#8 Jackal 5 4
#9 Jackal 30 5
#10 Impala 5 6
#11 Impala 30 7
与data.table类似