标签: zoo

用R中最近的右侧行值填充NA行值

我想将给定的数据帧从

             c1     c2   c3   c4    c5
    VEG PUFF <NA>    12  <NA>  <NA> 78.43
CHICKEN PUFF <NA>    16  <NA>  88.24 <NA>
BAKERY Total <NA>   <NA>  28   <NA> 84.04
Run Code Online (Sandbox Code Playgroud)

             c1     c2  
    VEG PUFF 12     78.43   
CHICKEN PUFF 16     88.24    
BAKERY Total 28     84.04
Run Code Online (Sandbox Code Playgroud)

我尝试了两种方法,但没有得到准确的结果有时会取左侧行值

step1 <-  t(na.locf(t(df), fromLast=T))
step2 <-  t(na.locf(t(step1), fromLast=F))

library(dplyr)
MyReplace = function(data) {data %>% t %>% na.locf(.,,T) %>% na.locf %>% t
Run Code Online (Sandbox Code Playgroud)

r zoo na dplyr

1
推荐指数
1
解决办法
1499
查看次数

R中的rollmin类似于zoo包rollmax

是否有 rollmin 的函数,与 Zoo 包中的 rollmean 和 rollmax 的工作方式相同?我查看了动物园的帮助文档,但找不到任何内容。

r zoo

1
推荐指数
1
解决办法
1771
查看次数

将数据框转换为 xts 对象

我有一个类似于这个虚拟数据的数据帧(时间序列):

df <- data.frame(stringsAsFactors=FALSE,
      symbol = c("N2", "NJ", "K-Kl", "K-P3", "K-N", "KP+", "K13", "KS",
                 "KTotal", "P500", "P800", "P23", "P55", "PA", "PKA"),
        date = c("2017-10-12", "2017-10-12", "2017-10-12", "2017-10-12",
                 "2017-10-12", "2017-10-12", "2017-10-12", "2017-10-12",
                 "2017-10-12", "2017-10-12", "2017-10-12", "2017-10-12", "2017-10-12",
                 "2017-10-12", "2017-10-12"),
     open_pr = c(10.2, 2.7, 0.5, 4.5, 2.9, 8.1, 2.3, 1, 43.2, 28.5, 5.8, 6.7,
                 5.7, 0.1, 10),
       gross = c(460L, 121L, 21L, 203L, 130L, 363L, 102L, 45L, 1946L, 1282L,
                 262L, 303L, 256L, 6L, 449L),
     avg_aud = c(19L, 3L, 0L, 5L, 5L, 21L, …
Run Code Online (Sandbox Code Playgroud)

r time-series zoo xts

1
推荐指数
1
解决办法
3146
查看次数

使用 ggplot scale_x_yearmon 缺少yearmon标签

我已经按月和年对一些数据进行了分组,使用zoo将其转换为yearmon,现在正在将其绘制在ggplot中。有谁知道为什么其中一个刻度标签缺失,而 2018-07 年却有一个,而该月没有数据?

示例数据:

df <-  data.frame(dates = c("2019-01", "2019-02", "2018-08", "2018-09", "2018-10", "2018-11", "2018-12"), values= c(0,1,2,3,4,5,6))
df$dates <- as.yearmon(df$dates)

ggplot(df, aes(x = dates, y = values)) + 
  geom_bar(position="dodge", stat="identity") +      
  theme_light() +
  xlab('Month') +
  ylab('values')+ 
  scale_x_yearmon(format="%Y %m")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

r graph ggplot2 zoo

1
推荐指数
1
解决办法
3197
查看次数

R 如何使用stackApply 计算每年的季节性平均值?

我想计算每年的季节性平均值,而不是整个时期。我将我的季节定义如下:DJF(12 月至 2 月)、MAM(3 月至 5 月)、JJA(6 月至 8 月)和 SON(9 月至 11 月)。

受到Fredrick问题解决方案的启发,我创建了一个索引“groups”来表示季节,然后我应用了命令“stackApply”,但这个命令计算了整个时期的平均季节值。我解释说,获得的最后一层只包含 4 个栅格,但就我而言,我想计算“每年的季节性平均值,因此每年必须有 4 个栅格,并且栅格堆栈总共应该有 136 个栅格。

在我的代码下面

谢谢你的帮助

library(raster)
set.seed(123)
r <- raster(ncol=10, nrow=10)
r_brick <- brick(sapply(1:408, function(i) setValues(r, rnorm(ncell(r), i, 3))))
dim(r_brick)

dates <- seq(as.Date("1982-01-01"), as.Date("2015-12-31"), by="month")  
months <- format(dates, "%Y-%m")

groups <- function(x) {
  d <- as.POSIXlt(x)

  ans <- character(length(x))
  ans[d$mon %in%  c(11,0:1)] <- "DJF"
  ans[d$mon %in%  2:4] <- "MAM"
  ans[d$mon %in%  5:7] <- "JJA"
  ans[d$mon %in% 8:10] <- "SON"
  ans …
Run Code Online (Sandbox Code Playgroud)

r zoo xts r-raster

1
推荐指数
1
解决办法
414
查看次数

R 中的最后一次观察结转和最后一次观察向后结转

我有一个看起来像这样的数据集

df <- data.frame(ID=c(1,1,1,1,1,2,2,2,3,3), values=c(NA, NA, 12, 13, NA, 5, NA, NA, NA, 1))
Run Code Online (Sandbox Code Playgroud)

我想要这样的输出,以便最后的观察结果被向前推进(按组),除非在一个填充值之前只有 NA 值,那么我希望将最后的观察结果向后推进:

df <- data.frame(ID=c(1,1,1,1,1,2,2,2,3,3), values=c(12, 12, 12, 13, 13, 5, 5, 5, 1, 1))
Run Code Online (Sandbox Code Playgroud)

我一直在使用 Zoo 包中的 dplyr 和 na.locf 。到目前为止我的方法是这样的:

df%>%
group_by(PID%>%
mutate_all(funs(na.locf(., na.rm = FALSE)))
Run Code Online (Sandbox Code Playgroud)

然而,这只是最后的观察结果。na.locf 函数中的规范“fromLast”向后进行最后一次观察。

但是我如何连接这两个,以便使用这两个功能:

  • na.LOCF 如果第一个填充值之前没有 NA 值
  • na.LOCF(fromLast) 表示如果在第一个填充值之前有 NA 值,则向后移最后一个观察值。

提前非常感谢!

r dataframe zoo dplyr

1
推荐指数
1
解决办法
1881
查看次数

R格式回答时差

我试图将答案减去2次.

这是一个例子:

> timer2$tdif2 <- as.numeric(strptime(as.character(timer2$time3), "%H:%M:%S:%OS") - strptime(as.character(timer2$time2), "%H:%M:%S:%OS"))
> timer2$tdif1 <- as.numeric(strptime(as.character(timer2$time2), "%H:%M:%S%OS") - strptime(as.character(timer2$time1), "%H:%M:%S%OS"))
> timer2$tdif2 <- as.numeric(strptime(as.character(timer2$time3), "%H:%M:%S:%OS") - strptime(as.character(timer2$time2), "%H:%M:%S:%OS"))
> timer2$tdifMax <- as.numeric(strptime(as.character(timer2$time3), "%H:%M:%S.%OS") - strptime(as.character(timer2$time1), "%H:%M:%S.%OS"))
> head(timer2)
         time1        time2        time3         tdif1 tdif2 tdifMax
1 08:00:20.799 08:00:20.799 08:00:20.799  0.0000000000    NA       0
2 08:00:21.996 08:00:22.071 08:00:23.821 -0.9249999523    NA       2
3 08:00:29.200 08:00:29.200 08:00:29.591  0.0000000000    NA       0
4 08:00:31.073 08:00:31.372 08:00:31.384  0.2990000248    NA       0
5 08:00:31.867 08:00:31.867 08:00:31.971  0.0000000000    NA       0
6 08:00:37.174 08:00:38.073 …
Run Code Online (Sandbox Code Playgroud)

r strptime zoo xts

0
推荐指数
1
解决办法
743
查看次数

按值排序zoo对象

我有一个动物园时间序列对象.在保留日期的同时,如何按值对其进行排序?

如果这是我的系列:

2013-10-02 2013-10-03 2013-10-04 2013-10-07 2013-10-08 2013-10-09 
-0.02      0.00       0.00       0.04       0.00       0.02
Run Code Online (Sandbox Code Playgroud)

结果应该是:

2013-10-02 2013-10-03 2013-10-04 2013-10-08 2013-10-09 2013-10-07
-0.02      0          0          0          0.02       0.04
Run Code Online (Sandbox Code Playgroud)

普通sort按日期(而非值)对zoo对象进行排序.zoo对象(日期,1个值系列)具有暗淡的NULL,因此无法指定我想要按第二列排序.

sorting r zoo

0
推荐指数
1
解决办法
1662
查看次数

如何合并动物园对象列表

我有一个动物园对象清单,我想将它们合并。我已经确保它们的长度相同。为了合并它们,我需要做一些类似的事情,

merge(my_list[[1]],my_list[[2]]...)
Run Code Online (Sandbox Code Playgroud)

但是随着列表长度的增加,这很快变得很麻烦。有人对此有建议吗?

r zoo

0
推荐指数
1
解决办法
911
查看次数

为什么ifelse不处理复杂的测试条件(&amp;&amp; /&&和|| / |之间的差异)?

因此,假设我有以下内容:

library(zoo)
v <- read.zoo(data.frame(dt=as.Date('2011-01-01')+0:9, a=1:10, b=11:20, c=21:30), index.column = "dt")
Run Code Online (Sandbox Code Playgroud)

为什么这样做:

ifelse(v$a > 5, 1, 0)
Run Code Online (Sandbox Code Playgroud)

这不起作用:

ifelse(v$a > 5 && v$a < 8, 1, 0)
Run Code Online (Sandbox Code Playgroud)

r dataframe zoo

0
推荐指数
1
解决办法
62
查看次数

标签 统计

r ×10

zoo ×10

xts ×3

dataframe ×2

dplyr ×2

ggplot2 ×1

graph ×1

na ×1

r-raster ×1

sorting ×1

strptime ×1

time-series ×1