【问题标题】:Frequency table with R (from raw time series)带有 R 的频率表(来自原始时间序列)
【发布时间】:2017-01-17 23:28:47
【问题描述】:

我有一个带有时间序列的.csv 文件。 我正在尝试使用ts(),并绘制它!但是我的初始数据集是一个操作的一行。所以我想用频率做一个表格。 我已经这样做了,但是对于我没有数据的(现有)日子,我想分配一个 0 频率值!

这是我的数据示例:

> table(ech$Date.Time) # Frequencies of observed dates

我生成了所有现有日期,使用:

> seq.Date(from = min(ech$Date.Time), to = max(ech$Date.Time), by = 1)

这是我想要得到的结果:

我尝试了几件事,但它没有按照我想要的方式工作! 这是我尝试过的示例,但它没有打印任何内容,并且我不理解错误消息。

> plot(ts(data = ech, deltat = table(ech$Date.Time)))

Error in plot(ts(data = ech, deltat = ech$Date.Time)) : erreur d'évaluation de l'argument 'x' lors de la sélection d'une méthode pour la fonction 'plot' : Error in Ops.Date(1, deltat) : / not defined for "Date" objects

在使用ts() 之前,我应该使用deltat,还是frequency,或者别的什么??

谢谢。

【问题讨论】:

    标签: r date time-series


    【解决方案1】:

    您可以使用merge 将完整的日期序列组合到您的数据集中。

    您需要确保日期列属于同一类(在这种情况下为日期)。

    使用您的数据集和日期顺序:

    #sequence of dates
    dates2 <- data.frame(dates = seq(as.Date('2014-04-05'), as.Date('2014-04-15'), by = 1))
    
    #merging the ech to sequence of dates
    newdf <- merge(dates2, ech, all.x = TRUE, by = 'dates')
    #setting NA to zero
    newdf$freq[is.na(newdf$freq)] <- 0
    

    输出:

            dates freq
    1  2014-04-05    1
    2  2014-04-06    1
    3  2014-04-07    2
    4  2014-04-08    0
    5  2014-04-09    0
    6  2014-04-10    2
    7  2014-04-11    0
    8  2014-04-12    1
    9  2014-04-13    0
    10 2014-04-14    2
    11 2014-04-15    1
    

    为了完成,我将其用作 ech:

    dates <- as.Date(c("2014-04-05", "2014-04-06", "2014-04-07", 
                       "2014-04-10", "2014-04-12", "2014-04-14", "2014-04-15"))
    freq <- c(1, 1, 2, 2, 1, 2, 1)
    ech <- data.frame(dates, freq)
    

    【讨论】:

    • 太好了,我不知道这个合并功能...非常感谢您的帮助!
    猜你喜欢
    • 2018-08-05
    • 2020-04-18
    • 2021-05-12
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    • 2013-11-13
    • 2021-04-02
    相关资源
    最近更新 更多