Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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
R 获取过去7天内的唯一用户计数_R_Dplyr_Tidyr_Zoo - Fatal编程技术网

R 获取过去7天内的唯一用户计数

R 获取过去7天内的唯一用户计数,r,dplyr,tidyr,zoo,R,Dplyr,Tidyr,Zoo,我有一个数据集,我想在其中查找过去7天(即过去7天)的活跃人员。比如说, date<- c('2009-01-03', '2009-01-03', '2009-01-03', '2009-01-04', '2009-01-05', '2009-02-01') person<- c('Abe', 'John', 'Abe', 'Kate', 'Jessica', 'Anu') df<- data.frame(date, person) 我试过这个。

我有一个数据集,我想在其中查找过去7天(即过去7天)的活跃人员。比如说,

     date<- c('2009-01-03', '2009-01-03', '2009-01-03', '2009-01-04', '2009-01-05', '2009-02-01')
     person<- c('Abe', 'John', 'Abe', 'Kate', 'Jessica', 'Anu')
     df<- data.frame(date, person)
我试过这个。有什么建议吗

   library(zoo)
   df$last_seven_days_active <- rollsumr(df$person, k = 8, fill = NA)
图书馆(动物园)

df$last\u seven\u days\u activeA
base
解决方案:

df$date <- as.Date(as.character(df$date))

df$last_seven_days_active <- with(df, sapply(date, function(x) length(unique(person[date >= x - 7 & date < x]))))

一个
base
解决方案:

df$date <- as.Date(as.character(df$date))

df$last_seven_days_active <- with(df, sapply(date, function(x) length(unique(person[date >= x - 7 & date < x]))))

介于
映射之间的选项

library(dplyr)
library(purrr)
df %>%
    mutate(last_seven_days_active = map_dbl(as.Date(date), 
         ~ n_distinct(person[between(date, .x - 7, .x) & date != .x] )))
#       date  person last_seven_days_active
#1 2009-01-03     Abe                      0
#2 2009-01-03    John                      0
#3 2009-01-03     Abe                      0
#4 2009-01-04    Kate                      2
#5 2009-01-05 Jessica                      3
#6 2009-02-01     Anu                      0

介于
映射之间的选项

library(dplyr)
library(purrr)
df %>%
    mutate(last_seven_days_active = map_dbl(as.Date(date), 
         ~ n_distinct(person[between(date, .x - 7, .x) & date != .x] )))
#       date  person last_seven_days_active
#1 2009-01-03     Abe                      0
#2 2009-01-03    John                      0
#3 2009-01-03     Abe                      0
#4 2009-01-04    Kate                      2
#5 2009-01-05 Jessica                      3
#6 2009-02-01     Anu                      0

使用
数据的选项。表

library(data.table)
setDT(df)[, date := as.IDate(date, format="%Y-%m-%d")]
df[, days7ago := date - 7L]
df[, last_seven_days_active := 
    df[df, on=.(date>=days7ago, date<date), by=.EACHI, 
        length(unique(person[!is.na(person)]))]$V1
]

使用
数据的选项。表

library(data.table)
setDT(df)[, date := as.IDate(date, format="%Y-%m-%d")]
df[, days7ago := date - 7L]
df[, last_seven_days_active := 
    df[df, on=.(date>=days7ago, date<date), by=.EACHI, 
        length(unique(person[!is.na(person)]))]$V1
]

您可能需要
rollappy
您可能需要
rollappy
我收到以下消息:as\u映射程序(.f,…):参数.f缺失,没有默认值。你能告诉我怎么处理吗?非常感谢much@user3570187您能否共享
purrr
的软件包版本。这里,指定
.f
的代码从
~
开始。我没有得到一个错误,虽然它起作用了,我想我的数据框中有一个列表,我认为是它导致了这个问题,当我删除这些变量时,它起作用了,非常感谢我得到了这个消息:as_mapper(.f,…):argument.f缺失,没有默认值。你能告诉我怎么处理吗?非常感谢much@user3570187您能否共享
purrr
的软件包版本。这里,指定
.f
的代码从
~
开始。我没有得到一个错误,虽然它起作用了,我想在我的数据框中有一个列表,我认为这是导致这个问题的原因,当我删除这些变量时,它起作用了,感谢我一直在考虑这个选项。很好,你想到了我在考虑这个选择。很好,你想出了一个很好的挑战!但很高兴看到你也学会了它们——很多时候我只是通过看到其他更好的方法来学习。祝你一切顺利!随时准备迎接一个好的挑战!但很高兴看到你也学会了它们——很多时候我只是通过看到其他更好的方法来学习。祝你一切顺利!