使用R统计软件进行时间序列分析

时间:2017-07-24 09:53:10

标签: r datetime

分析数据集时遇到问题。

786650417, 3197478917, 264665794, **2016-12-01T00:00:00Z**, 1, 4, 94717580778

上面是我数据集中的一列。我想提取日期和时间(突出显示)并创建一个新列。

我尝试过以下代码:

sms <- sms %>%
  mutate(date =str_extract_all(data , "[0-9]+\\-"))

从这段代码中,我得到的日期用( - )分隔,但不正确。

sms <- sms %>%
  mutate(time =str_extract_all(data , "[0-9]+\\:"))

由此,我得到了时间。

然后,我使用下面的R代码删除了引号。

del <- colwise(function(sms) str_replace_all(sms, '\"', ""))
sms <- del(sms)

所以,最后,它看起来像这样。

786650417, 3197478917, 264665794, 2016-12-01T00:00:00Z, 1, 4, 94717580778

我从上面的一行做了两列。这两行在下面。

date                    time
c(2016-, 12-)       c(00:, 00:)

但是现在,我无法执行任何预测方法,因为日期和时间格式不正确。

请帮我从此记录中提取正确类型的日期和时间。

786650417, 3197478917, 264665794, 2016-12-01T00:00:00Z, 1, 4, 94717580778

在我的数据集中,有200万条这样的记录。

2 个答案:

答案 0 :(得分:0)

我认为您可以将要提取的两列分配给变量:

A <- nameOfYourSet$date 

B <- nameOfYOurSet$time

使用$来确定您要考虑的标签(您的案例中的哪些列)。

然后尝试使用cbind()函数进行一些连接以获得所需内容:

cbind(A,B)会在B的右侧“粘贴”A

最后,使用.***()函数来获得执行预测所需的正确格式(我不知道您需要什么格式)。

答案 1 :(得分:0)

让我们试试这个 -

library(stringr)
library(chron)
df <- data.frame(raw_data=c("786650417,3197478917,264665794,2016-12-01T00:00:00Z,1,4,94717580778",
                            "786650417,3197478917,264665794,2016-12-01T00:02:17Z,1,4,94717580778",
                            "786650417,3197478917,264665794,2016-12-01T00:28:10Z,1,4,94717580778"))
df$date <- as.Date(str_extract(df$raw_data, "\\d{4}-\\d{2}-\\d{2}"))
df$time <- chron(times=str_extract(df$raw_data, "\\d{2}:\\d{2}:\\d{2}"))
df$datetime <- strptime(paste(str_extract(df$raw_data, "\\d{4}-\\d{2}-\\d{2}"), str_extract(df$raw_data, "\\d{2}:\\d{2}:\\d{2}"), sep = " "), format="%Y-%m-%d %H:%M:%S")
df

注意:时间可以根据收集的数据的实际时区进行格式化 - 您只需要再向strptime()提供一个参数,例如: tz = "GMT"如果时间戳采用GMT格式,或者默认情况下将选择本地系统的时区(在本例中为IST)。


不要忘记通过将其标记为正确答案来告诉我们它是否解决了您的问题:)