R 如何使用按行的列分隔符获取频率计数?
我有一个数据框架,用于跟踪个人x(Bob)在感兴趣的时间段(1900-1999年)内的服务参与(srvc_inv{1,0})R 如何使用按行的列分隔符获取频率计数?,r,R,我有一个数据框架,用于跟踪个人x(Bob)在感兴趣的时间段(1900-1999年)内的服务参与(srvc_inv{1,0}) 但是,我想确定Bob在感兴趣的时间段内的服务事件数(在本例中为2)。一个独特的服务事件将通过连续日期的服务中断来识别。有人知道怎么编程吗?谢谢 一种可能是: dat %>% group_by(name) %>% mutate(rleid = with(rle(srvc_inv), rep(seq_along(lengths), lengths))) %&g
但是,我想确定Bob在感兴趣的时间段内的服务事件数(在本例中为2)。一个独特的服务事件将通过连续日期的服务中断来识别。有人知道怎么编程吗?谢谢 一种可能是:
dat %>%
group_by(name) %>%
mutate(rleid = with(rle(srvc_inv), rep(seq_along(lengths), lengths))) %>%
summarise(ever_inv = n_distinct(rleid[srvc_inv == 1]))
name ever_inv
<fct> <int>
1 Bob 2
dat%>%
分组单位(名称)%>%
变异(rleid=带有(rle(srvc_inv),代表(沿(长度)的顺序),长度))%>%
摘要(ever_inv=n_distinct(rleid[srvc_inv==1]))
名称:永利投资
1鲍勃2
基于基本Rrle的又一个解决方案
library(dplyr)
dat %>% group_by(name) %>%
summarise(ever_inv = length(with(rle(srvc_inv), lengths[values==1])))
# A tibble: 1 x 2
name ever_inv
<fct> <int>
1 Bob 2
库(dplyr)
dat%%>%group_按(名称)%%>%
总结(ever_inv=长度(带(rle(srvc_inv),长度[值==1]))
#一个tibble:1x2
名称:永利投资
1鲍勃2
除了rle()
之外,您还可以使用diff()
:
假设srvc\u inv
为0或1,这就足够对rle
对象的value
组件求和,该组件返回1次运行的次数。非常感谢!快速问题-查询外部数据库时RLE是否工作?“dat”输入将来自Oracle数据库,我计划使用dplyr/dbplyr编写查询,然后将R转换为SQL。我只是想知道,这个操作将在一个具有大量数据的数据集上执行records@DJC很抱歉,我认为这是不可能的,因为rle
基本R函数和dplyr
将无法将其转换为有效的SQL。
dat %>%
group_by(name) %>%
mutate(rleid = with(rle(srvc_inv), rep(seq_along(lengths), lengths))) %>%
summarise(ever_inv = n_distinct(rleid[srvc_inv == 1]))
name ever_inv
<fct> <int>
1 Bob 2
library(dplyr)
dat %>% group_by(name) %>%
summarise(ever_inv = length(with(rle(srvc_inv), lengths[values==1])))
# A tibble: 1 x 2
name ever_inv
<fct> <int>
1 Bob 2
dat %>%
group_by(name) %>%
summarise(ever_inv = sum(diff(c(0, srvc_inv)) > 0))
# A tibble: 1 x 2
# name ever_inv
# <fct> <int>
# 1 Bob 2
dat %>%
group_by(name) %>%
summarise(ever_inv = sum(rle(srvc_inv)$value))
# A tibble: 1 x 2
# name ever_inv
# <fct> <int>
# 1 Bob 2