Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.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
基于2条语句对R(dplyr包)中的组进行计数_R_Dplyr - Fatal编程技术网

基于2条语句对R(dplyr包)中的组进行计数

基于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

我想知道是否可以使用dplyr计算访问次数。每次经过的时间超过30次或物种发生变化时,即定义访问

我试着按物种对它们进行分组

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类似