我确实有丢失数据的问题,但我没有NA - 否则会更容易处理...
我的数据如下:
time, value
2012-11-30 10:28:00, 12.9
2012-11-30 10:29:00, 5.5
2012-11-30 10:30:00, 5.5
2012-11-30 10:31:00, 5.5
2012-11-30 10:32:00, 9
2012-11-30 10:35:00, 9
2012-11-30 10:36:00, 14.4
2012-11-30 10:38:00, 12.6
Run Code Online (Sandbox Code Playgroud)
正如你所看到的 - 缺少一些分钟值 - 它是xts/zoo所以我使用as.POSIXct ...来设置日期作为索引.如何添加缺少的时间步以获得完整的ts?我想用线性插值填充缺失值.
谢谢您的帮助!
我正在努力将zoo对象转换为ts对象.
我有一个巨大的data.frame"test",包含季度小时数据,如下所示:
date <- c("2010-07-04 09:45:00", "2010-07-04 10:00:00", "2010-07-04 10:15:00", "2010-07-04 10:30:00", "2010-07-04 10:45:00", "2010-07-04 11:00:00")
nrv <- c("-147.241", "-609.778", "-432.289", "-340.418", "-73.96" , "-533.108")
tt <- c("3510.7", "3608.5", "3835.7", "4003.7", "4018.8", "4411.9")
test <- data.frame(date,nrv,tt)
test
Run Code Online (Sandbox Code Playgroud)
我想做一些预测(大多数情况下ARIMA),并认为forecast包装将是一个好主意.我首先从字符中形成数据.
test$date <- strptime(test$date,format="%Y-%m-%d %H:%M")
test$nrv <- as.numeric(as.character(test$nrv))
test$tt <- as.numeric(as.character(test$tt))
str(test) #date is POSIXlt object
Run Code Online (Sandbox Code Playgroud)
由于我需要进行插值并构造滞后,我还使用了zoo使用日期变量作为索引的包,这非常有用.`zoo在处理时间序列数据时,我向我推荐了这个包.
library(zoo)
test.zoo <- zoo(test[,2:3],test[,1])
test.zoo #date is now the Index and and the zoo …Run Code Online (Sandbox Code Playgroud) 我正在使用类似于以下摘录的数据集:
head(nomis.lng.agg)
quarter decile avg.val
1 2004 Q4 1 5.680000
2 2005 Q1 1 5.745763
3 2005 Q2 1 5.503341
4 2005 Q3 1 5.668224
5 2005 Q4 1 5.244604
6 2006 Q1 1 5.347222
Run Code Online (Sandbox Code Playgroud)
变量quarter是由class yearqtr生成的zoo.其余两列是数字.我目前正在生成使用以下ggplot语法的绘图:
ggplot(data = subset(x = df,
subset = df$decile== 1 |
df$decile== 10),
aes(x = quarter, y = avg.val, group = decile)) +
geom_line(aes(linetype=as.factor(decile)),
size = 1) +
scale_x_yearqtr(format = "%YQ%q", n = 5) +
xlab("Quarter") + …Run Code Online (Sandbox Code Playgroud) 我想在数据帧的变量中执行线性插值,其中考虑到:1)两点之间的时间差,2)获取数据的时刻以及 3)为测量变量而采取的个人。
例如在下一个数据框中:
df <- data.frame(time=c(1,2,3,4,5,6,7,1,2,3),
Individuals=c(1,1,1,1,1,1,1,2,2,2),
Value=c(1, 2, 3, NA, 5, NA, 7, 5, NA, 7))
df
Run Code Online (Sandbox Code Playgroud)
我想获得:
result <- data.frame(time=c(1,2,3,4,5,6,7,1,2,3),
Individuals=c(1,1,1,1,1,1,1,2,2,2),
Value=c(1, 2, 3, 4, 5, 6, 7, 5, 5.5, 6))
result
Run Code Online (Sandbox Code Playgroud)
我不能完全使用na.approx包的功能,zoo因为所有观察都不是连续的,一些观察属于一个人,其他观察属于其他人。原因是因为如果第二个人将第一次观察到NA而我将专门使用该功能na.approx,我将使用来自 的信息individual==1来插入NA的individual==2(例如,下一个数据帧将有此类错误)
df_2 <- data.frame(time=c(1,2,3,4,5,6,7,1,2,3),
Individuals=c(1,1,1,1,1,1,1,2,2,2),
Value=c(1, 2, 3, NA, 5, NA, 7, NA, 5, 7))
df_2
Run Code Online (Sandbox Code Playgroud)
我试过使用这些包zoo和dplyr:
library(dplyr)
library(zoo)
proof <- df %>%
group_by(Individuals) %>%
na.approx(df$Value)
Run Code Online (Sandbox Code Playgroud)
但我不能 …
使用 R 3.6 我可以执行以下 NA 替换
> d <- zoo(data.frame(a = NA, b = 1), Sys.Date())
> d[is.na(d)] <- 1
> d
a b
2021-03-03 1 1
Run Code Online (Sandbox Code Playgroud)
使用 R 4.0 我收到以下错误:
> d <- zoo(data.frame(a = NA, b = 1), Sys.Date())
> d[is.na(d)] <- 1
Error in as.Date.default(e) :
do not know how to convert 'e' to class “Date”
Run Code Online (Sandbox Code Playgroud)
R 4.0 中的某些默认行为是否发生了变化?
R 3.6 会话信息:
Microsoft Windows [Version 10.0.19041.804]
(c) 2020 Microsoft Corporation. All rights reserved.
C:\>R --no-site-file
R version …Run Code Online (Sandbox Code Playgroud) 为了对能源使用产生季节性影响,我需要将计费数据库中的能源使用信息与月度温度保持一致.
我正在使用具有不同长度和开始日期和结束日期的帐单的结算数据集,并且我想获得每个月内每个帐户的月平均值.例如,我有一个具有以下特征的计费数据库:
acct amount begin end days
1 2242 11349 2009-10-06 2009-11-04 29
2 2242 12252 2009-11-04 2009-12-04 30
3 2242 21774 2009-12-04 2010-01-08 35
4 2242 18293 2010-01-08 2010-02-05 28
5 2243 27217 2009-10-06 2009-11-04 29
6 2243 117 2009-11-04 2009-12-04 30
7 2243 14543 2009-12-04 2010-01-08 35
Run Code Online (Sandbox Code Playgroud)
我想弄清楚如何强制这些有点不规则的时间序列(对于每个帐户)来获得每个月内每个月内的平均金额,以便:
acct amount begin end days avgamtpday
1 2242 11349 2009-10-01 2009-10-31 31 X
2 2242 12252 2009-11-01 2009-11-30 30 X
3 2242 21774 2009-12-01 2010-12-31 31 X
4 2242 18293 …Run Code Online (Sandbox Code Playgroud) 我想按小时平均汇总数据.每日很容易:
apply.daily(X2,mean)
Run Code Online (Sandbox Code Playgroud)
为什么每小时没有功能?我试过了
hr.means <- aggregate(X2, format(X2["timestamp"],"%Y-%m-%d %H"))
Run Code Online (Sandbox Code Playgroud)
并且修剪参数总是出错.是否有类似apply.daily的更简单的功能?如果我想聚合5分钟的平均值怎么办?数据是每分钟的值:
"timestamp", value
"2012-04-09 05:03:00",2
"2012-04-09 05:04:00",4
"2012-04-09 05:05:00",5
"2012-04-09 05:06:00",0
"2012-04-09 05:07:00",0
"2012-04-09 05:08:00",3
"2012-04-09 05:09:00",0
"2012-04-09 05:10:00",1
Run Code Online (Sandbox Code Playgroud)
我正在使用xts和动物园.
我创建了一个虚拟时间序列xts对象,其日期为2-09-2015,缺少数据:
library(xts)
library(ggplot2)
library(scales)
set.seed(123)
seq <- seq(as.POSIXct("2015-09-01"),as.POSIXct("2015-09-02"), by = "1 hour")
ob1 <- xts(rnorm(length(seq),150,5),seq)
seq2 <- seq(as.POSIXct("2015-09-03"),as.POSIXct("2015-09-05"), by = "1 hour")
ob2 <- xts(rnorm(length(seq2),170,5),seq2)
final_ob <- rbind(ob1,ob2)
plot(final_ob)
# with ggplot
df <- data.frame(time = index(final_ob), val = coredata(final_ob) )
ggplot(df, aes(time, val)) + geom_line()+ scale_x_datetime(labels = date_format("%Y-%m-%d"))
Run Code Online (Sandbox Code Playgroud)
红色矩形部分表示缺少数据的日期.如何在主图中显示当天缺少数据?
我想我应该用不同的颜色显示这个缺失的数据.但是,我不知道如何处理数据以反映主图中缺少的数据行为.
背景:
我可以使用 data.table(见附件)从我的数据中获取多个时刻,但这需要很长时间。我在想,对表格进行排序以获得特定百分位数的过程会更有效地找到几个。
像中值这样的一次性统计需要 1.79 毫秒,而非中值分位数需要 68 倍的时间,为 122.8 毫秒。必须有一种方法来减少计算时间。
问题:
我的带有微小合成数据的示例代码:
#libraries
library(data.table) #data.table
library(zoo) #roll apply
#reproducibility
set.seed(45L)
#make data
DT<-data.table(V1=c(1L,2L),
V2=LETTERS[1:3],
V3=round(rnorm(300),4),
V4=round(runif(150),4),
V5=1:1200)
DT
#get names
my_col_list <- names(DT)[c(3,4)]
#make new variable names
my_name_list1 <- paste0(my_col_list, "_", "33rd_pctile")
my_name_list2 <- paste0(my_col_list, "_", "77rd_pctile")
#compute values
for(i in 1:length(my_col_list)){
#first
DT[, (my_name_list1[i]) := unlist(lapply(.SD,
function(x) rollapply(x,
7,
quantile,
fill = NA,
probs = 1/3)),
recursive = F),
.SDcols = my_col_list[i]]
#second
DT[, (my_name_list2[i]) …Run Code Online (Sandbox Code Playgroud) r ×10
zoo ×10
time-series ×6
xts ×4
data.table ×2
as.date ×1
dplyr ×1
ggplot2 ×1
group-by ×1
median ×1
performance ×1
sql ×1