我创建了这个数据框,它对我的数据非常具有代表性,对于冗长的代码非常抱歉。
library(lubridate)
datelist = seq(ymd_hms('1980-01-01 00:00:00'),ymd_hms('1980-07-01 00:00:00'), by = '60 mins')
df = data.frame(replicate(2,sample(0:130,4000,rep=TRUE)))
nbr_missing<-1000
y<-data.frame(row=sample(nrow(df),size = nbr_missing,replace = T),
col=sample(ncol(df),size = nbr_missing,replace = T))
y<-y[!duplicated(y),]
df[as.matrix(y)]<-NA
df2 = data.frame(replicate(2,sample(0:130,369,rep=TRUE)))
nbr_missing<-500
xy<-data.frame(row=sample(nrow(df2),size = nbr_missing,replace = T),
col=sample(ncol(df2),size = nbr_missing,replace = T))
xy<-xy[!duplicated(xy),]
df2[as.matrix(xy)]<-NA
fill1 = data.frame(matrix(NA, nrow = 4000, ncol = 2))
fill2 = data.frame(matrix(NA, nrow = 369, ncol = 2))
df_new1 = rbind(df, fill2)
df_new2 = rbind(fill1, df2)
df_new = cbind(df_new1, df_new2)
testframe = as.data.frame(cbind(datelist,df_new))
colnames(testframe) = c("Date", "ABC", "DEF", "GHI", "JKL")
我在计算每日平均值时遇到问题。我将此代码与其他数据一起使用了几次,它一直都很好用。但是,这似乎给了我错误的结果。知道为什么以及如何解决这个问题吗?
library(dplyr)
testframe1 = testframe %>%
group_by(group = gl(n()/24, 24)) %>%
summarise_at(-1, mean, na.rm = TRUE)
例如,JKL列,第一天的小时数据中仅包含NA,但是当我创建平均值时,它给了我一个数字,而不是NA!
这里是使用此命令时得到的示例。
我不确定dplyr
代码出了什么问题,您可以将by()
方法与colMeans()
结合使用。