在R中查找列每天来回切换的次数

在R中查找列每天来回切换的次数,r,R,如果能帮我弄清楚如何判断我在R中的专栏是否从“下半部分”切换到“晒太阳”,我将不胜感激。这是我的数据示例,您可以看到我引用的内容 可复制的例子是巨大的,我不知道如何减少它。因此,我将插入数据集外观的图片。我尝试了dput(head(我的_数据,10)),它超过260000个字符。请帮助我了解如何显示数据集。是3744 obs。由3个变量组成 我想做的是计算列“位置”每天从下半部分切换到晒太阳的次数。如果我需要提供更多信息,请告诉我 刚刚添加:这里有一个示例代码,您可以以相同的方式运行(在这种情

如果能帮我弄清楚如何判断我在R中的专栏是否从“下半部分”切换到“晒太阳”,我将不胜感激。这是我的数据示例,您可以看到我引用的内容

可复制的例子是巨大的,我不知道如何减少它。因此,我将插入数据集外观的图片。我尝试了dput(head(我的_数据,10)),它超过260000个字符。请帮助我了解如何显示数据集。是3744 obs。由3个变量组成

我想做的是计算列“位置”每天从下半部分切换到晒太阳的次数。如果我需要提供更多信息,请告诉我

刚刚添加:这里有一个示例代码,您可以以相同的方式运行(在这种情况下L1并不重要):

df这是否有效:

library(dplyr)
set.seed(101)
df <- data.frame(date = c(rep(as.Date('2017-05-21'), 10), rep(as.Date('2017-05-22'), 10)),
                 Position = sample(c('Bottom_Half','Basking'), 20, T))
df
         date    Position
1  2017-05-21 Bottom_Half
2  2017-05-21 Bottom_Half
3  2017-05-21     Basking
4  2017-05-21 Bottom_Half
5  2017-05-21 Bottom_Half
6  2017-05-21 Bottom_Half
7  2017-05-21     Basking
8  2017-05-21 Bottom_Half
9  2017-05-21 Bottom_Half
10 2017-05-21     Basking
11 2017-05-22 Bottom_Half
12 2017-05-22     Basking
13 2017-05-22 Bottom_Half
14 2017-05-22     Basking
15 2017-05-22 Bottom_Half
16 2017-05-22     Basking
17 2017-05-22 Bottom_Half
18 2017-05-22     Basking
19 2017-05-22 Bottom_Half
20 2017-05-22 Bottom_Half
df %>% group_by(Day = lubridate::day(date)) %>% summarise(c = max(cumsum(Position != 'Bottom_Half')))
# A tibble: 2 x 2
    Day     c
  <int> <int>
1    21     3
2    22     4
库(dplyr)
种子集(101)
df%分组依据(日=润滑油::日(日期))%>%总结(c=最大值(总和(位置)=‘下半部分’))
#一个tibble:2x2
c天
1    21     3
2    22     4

do
dput(头部(我的头部数据[,c('date','turtle','Position')],10))
@onyambu仍然不起作用。不是只显示前10行,它们基本上都显示出来,所以列出了所有的日期和时间(这是很多),结果应该是3而不是7吗?我只看到三个变化,从
Botton\u Half
到晒太阳。或者你还应该包括从晒太阳到下半身的变化吗?@Onyanbu,你是对的,已经做了改变。@karthik S当我这样做时,我的第2天的值是NA作为c值。我不知道为什么,因为我知道位置值至少改变一次。我还忘了提到,当海龟从上半部分开始晒太阳时,我也需要计算(与下半部分的计数相同)。此外,我得到的计数是十(如74和68),我知道事实上它不会切换太多,因为我手动计算了一些。
library(dplyr)
set.seed(101)
df <- data.frame(date = c(rep(as.Date('2017-05-21'), 10), rep(as.Date('2017-05-22'), 10)),
                 Position = sample(c('Bottom_Half','Basking'), 20, T))
df
         date    Position
1  2017-05-21 Bottom_Half
2  2017-05-21 Bottom_Half
3  2017-05-21     Basking
4  2017-05-21 Bottom_Half
5  2017-05-21 Bottom_Half
6  2017-05-21 Bottom_Half
7  2017-05-21     Basking
8  2017-05-21 Bottom_Half
9  2017-05-21 Bottom_Half
10 2017-05-21     Basking
11 2017-05-22 Bottom_Half
12 2017-05-22     Basking
13 2017-05-22 Bottom_Half
14 2017-05-22     Basking
15 2017-05-22 Bottom_Half
16 2017-05-22     Basking
17 2017-05-22 Bottom_Half
18 2017-05-22     Basking
19 2017-05-22 Bottom_Half
20 2017-05-22 Bottom_Half
df %>% group_by(Day = lubridate::day(date)) %>% summarise(c = max(cumsum(Position != 'Bottom_Half')))
# A tibble: 2 x 2
    Day     c
  <int> <int>
1    21     3
2    22     4