R 使用列滚动中值时出错
我有一个dataframe,我尝试为它添加额外的列,计算当前值和前2个值的中值R 使用列滚动中值时出错,r,median,R,Median,我有一个dataframe,我尝试为它添加额外的列,计算当前值和前2个值的中值 Date Value 21/07/2016 14.8 22/07/2016 14.9 23/07/2016 15.8 24/07/2016 15.0 25/07/2016 15.7 26/07/2016 15.6 27/07/2016 16.1 28/07/2016 16.1 我使用了以下代码: library(zoo) dataframe$medianval <-rollme
Date Value
21/07/2016 14.8
22/07/2016 14.9
23/07/2016 15.8
24/07/2016 15.0
25/07/2016 15.7
26/07/2016 15.6
27/07/2016 16.1
28/07/2016 16.1
我使用了以下代码:
library(zoo)
dataframe$medianval <-rollmedian(dataframe$Value,k=3)
图书馆(动物园)
dataframe$medianval错误:k想想R在这里试图做什么。数据帧有8行
,但要追加的向量只有6个
元素。这些元素应与哪些行对齐?R应该在另外两个地方放什么
library(zoo)
dataframe <- read.table(text="Date Value
21/07/2016 14.8
22/07/2016 14.9
23/07/2016 15.8
24/07/2016 15.0
25/07/2016 15.7
26/07/2016 15.6
27/07/2016 16.1
28/07/2016 16.1", header=TRUE)
rollmedian(dataframe$Value,k=3)
# [1] 14.9 15.0 15.7 15.6 15.7 16.1
nrow(dataframe) # [1] 8
length(rollmedian(dataframe$Value,k=3)) # [1] 6
图书馆(动物园)
dataframe非常感谢您的帮助和澄清。是否会有不同于c的方式(NA,NA,…例如,如果我想运行一个循环测试不同的中位数长度?
library(zoo)
dataframe <- read.table(text="Date Value
21/07/2016 14.8
22/07/2016 14.9
23/07/2016 15.8
24/07/2016 15.0
25/07/2016 15.7
26/07/2016 15.6
27/07/2016 16.1
28/07/2016 16.1", header=TRUE)
rollmedian(dataframe$Value,k=3)
# [1] 14.9 15.0 15.7 15.6 15.7 16.1
nrow(dataframe) # [1] 8
length(rollmedian(dataframe$Value,k=3)) # [1] 6
dataframe$medianval <- c(NA, NA, rollmedian(dataframe$Value,k=3))
dataframe
# Date Value medianval
# 1 21/07/2016 14.8 NA
# 2 22/07/2016 14.9 NA
# 3 23/07/2016 15.8 14.9
# 4 24/07/2016 15.0 15.0
# 5 25/07/2016 15.7 15.7
# 6 26/07/2016 15.6 15.6
# 7 27/07/2016 16.1 15.7
# 8 28/07/2016 16.1 16.1
med.fun <- function(var, data, k){
# Note: variable name must be in quotes
return(c(rep(NA, k-1), with(data, rollmedian(get(var), k=k))))
}
med.fun("Value", dataframe, 5)
# [1] NA NA NA NA 15.0 15.6 15.7 15.7