如何使用dplyr在多个时间序列上运行转换点分析

如何使用dplyr在多个时间序列上运行转换点分析,r,dplyr,time-series,R,Dplyr,Time Series,我正在从维基百科收集时间序列数据,并希望使用dplyr对每个时间序列进行变化点分析。但是当我这样做时,我得到一个错误,说数据需要是数字的,即使类函数声明它是数字的。希望你能帮忙 library(changepoint) library(dplyr) library(pageviews) library(data.table) articles <- c("Rugby_union", "Football") foo <- function(x){article_pageviews(

我正在从维基百科收集时间序列数据,并希望使用dplyr对每个时间序列进行变化点分析。但是当我这样做时,我得到一个错误,说数据需要是数字的,即使
函数声明它是数字的。希望你能帮忙

library(changepoint)
library(dplyr)
library(pageviews)
library(data.table)

articles <- c("Rugby_union", "Football")

foo <- function(x){article_pageviews(project = "en.wikipedia",
                                     article = x, 
            start = as.Date('2017-01-01'), 
            end = as.Date("2017-12-31")
          , user_type = "user", platform = c("mobile-web"))
    }

output<-articles %>% foo

output %>% 
  select(article, views) %>% 
  do(cpt.mean(.)) 

class(output$views)
库(变更点)
图书馆(dplyr)
图书馆(网页浏览)
库(数据表)
物品%
do(cpt.平均值()
类(输出$views)
库(变更点)
图书馆(dplyr)
图书馆(网页浏览)

文章什么是dat.grp?考虑到您希望在tidyverse中操作,我猜您将使用
purrr::map
函数。然而,这只是从你的描述和缺乏任何测试数据或预期结果的可靠描述,我们只能猜测。请回答您的问题,使其可复制。然后我可以删除我的投票结果,这是因为没有引用错误消息,也没有办法在完全缺少数据的情况下看到错误。我更改了一个输入错误,该对象应称为输出。pageviews包应该下拉数据以查看其外观。我试图获得每个时间序列(橄榄球和足球)的转换点数量
library(changepoint)
library(dplyr)
library(pageviews)

articles <- c("Rugby_union", "Football")

foo <- function(x){article_pageviews(project = "en.wikipedia", article = x, 
                                     start = as.Date('2017-01-01'), 
                                     end = as.Date("2017-12-31"),
                                     user_type = "user", platform = c("mobile-web"))
}

output <- articles %>% 
  foo
df <- as.data.frame(table(output$article))
output1 <- output %>% 
  dplyr::select(article, views) %>% 
  dplyr::filter(article == df[1,1])
output2 <- output %>% 
  dplyr::select(article, views) %>% 
  dplyr::filter(article == df[2,1])
q <- floor((min(length(output1$views), length(output2$views)))/2 + 1)
cp1 <- changepoint::cpt.mean(data = output1$views, Q = q, method = "BinSeg", penalty 
= "SIC")
plot(cp1)
cp2 <- changepoint::cpt.mean(data = output2$views, Q = q, method = "BinSeg", penalty 
= "SIC")
plot(cp2)