首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用padr包在R中插入丢失小时数据中的行-奇怪的错误

使用padr包在R中插入丢失小时数据中的行-奇怪的错误
EN

Stack Overflow用户
提问于 2017-06-28 23:35:46
回答 1查看 419关注 0票数 0

我是新的R和我有一些问题与padr包描述的这里

我有一个小时数据集,它是缺少的小时,我想插入一行来输入缺失数据的值。我正在尝试使用padr包中的pad函数和fill_by_value函数,但是当我使用pad函数时,我得到了一个错误。

称为Mendo的数据显示为:

代码语言:javascript
复制
Date.Local    Time.Local    Sample.Measurement
2016-01-01    00:00:00                      3
2016-01-01    00:01:00                      4
2016-01-01    00:02:00                      1
2016-01-01    00:04:00                      4
2016-01-01    00:05:00                      5

我希望最终的数据看起来像:

代码语言:javascript
复制
Date.Local    Time.Local    Sample.Measurement
2016-01-01    00:00:00                      3
2016-01-01    00:01:00                      4
2016-01-01    00:02:00                      1
2016-01-01    00:03:00                    999
2016-01-01    00:04:00                      4
2016-01-01    00:05:00                      5

我的印象是padr打包后需要一个datetime POSIXct列,所以我使用以下命令

代码语言:javascript
复制
Mendo$Time.Local <- as.POSIXct(paste(Mendo$Date.Local, Mendo$Time.Local), format = '%Y-%m-%d %H:%M')

得到:

代码语言:javascript
复制
Time.Local             Sample.Measurement
2016-01-01 00:00:00                      3
2016-01-01 00:01:00                      4
2016-01-01 00:02:00                      1
2016-01-01 00:04:00                      4
2016-01-01 00:05:00                      5

现在我尝试使用pad函数,就像上面提供的链接中的指令一样。我的代码是:

代码语言:javascript
复制
Mendo_padded <- Mendo %>% pad

我得到了一个错误:

if (total_invalid == nrow(x)) {:缺失值(除了警告消息: if (唯一(nchar(X_char)) == 10) ){:条件长度>1并且只使用第一个元素时出错

如果这是可行的,那么我将使用命令

代码语言:javascript
复制
Mendo_padded %>% fill_by_value(Sample.Measurement, value = 999)

以获得所有丢失的小时Sample.Measurement值为999。

我想要反馈,建议或评论,我可能做错了什么,我如何才能让这段代码工作!谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-30 03:13:41

pad似乎可以自动检测日期/ POSIXct / POSIXlt类型的列,因此不需要向pad提供Mendo$Time.Local。填充物将每隔一小时施加一次。

代码语言:javascript
复制
library(magrittr)
library(padr)

PM10 <- read.csv(file="../Downloads/hourly_81102_2016.csv",
                 stringsAsFactors = FALSE) # don't change the columns to factors
Mendo <- PM10[PM10$County.Name == "Mendocino",]
Mendo$Time.Local <-
  as.POSIXct(paste(
    Mendo$Date.Local, Mendo$Time.Local), format = '%Y-%m-%d %H:%M')
Mendo <- Mendo[,c("Time.Local", "Sample.Measurement")]


# remove Mendo$Time.Local
Mendo_padded <- Mendo %>% na.omit %>%
  pad(interval = 'hour', 
      start_val = NULL, end_val = NULL, group = NULL, 
      break_above = 1)

您还可以考虑使用列Time.GMTDate.GMT,因为日期和时间可能取决于您(计算机)所在的位置。

编辑: OP建议的,在pad之前应该使用na.omit,以避免日期列中的NA值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44814135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档