R-直接或首先转换为数据帧提取xts对象中所有列的摘要统计信息
我有一个xts对象,它包含24小时内的多个参数(每分钟测量)。根据时间,我添加了一个列分组到4个“一天中的时间”(tod)选项中:“上午”、“下午”、“晚上”和“晚上” 我想提取整个期间以及按时间(“tod”)计算的列(参数)的平均值和标准偏差 我曾尝试首先将xts对象转换为数据帧,但由于列是class factor而不是numeric,所以出现了问题。我也尝试过“聚合”,但当我使用聚合时,得到了非常奇怪的输出(或错误)。以下是一个例子: 例如,创建更小版本的我的数据的代码:R-直接或首先转换为数据帧提取xts对象中所有列的摘要统计信息,r,dataframe,aggregate,xts,R,Dataframe,Aggregate,Xts,我有一个xts对象,它包含24小时内的多个参数(每分钟测量)。根据时间,我添加了一个列分组到4个“一天中的时间”(tod)选项中:“上午”、“下午”、“晚上”和“晚上” 我想提取整个期间以及按时间(“tod”)计算的列(参数)的平均值和标准偏差 我曾尝试首先将xts对象转换为数据帧,但由于列是class factor而不是numeric,所以出现了问题。我也尝试过“聚合”,但当我使用聚合时,得到了非常奇怪的输出(或错误)。以下是一个例子: 例如,创建更小版本的我的数据的代码: # time ve
# time vector:
Time <- ISOdatetime(2015,01,01,6,12,0) + seq(0:(0.5*60-1))*1*60
# sample parameter columns
a <- 1:30
b <- 31:60
c<-seq(1,90,3)
# a sample xts object 'tester'
tester <- xts(cbind(a,b,c),Time)
# assign 'time of day':
tester$tod <- NA
tester$tod["T06:00/T06:20"]<-"night"
tester$tod["T06:21/T11:30"]<-"morning"
tester$tod["T06:31/T06:50"]<-"afternoon"
时间向量:
时间当您尝试创建字符向量时,
tod
您需要强制coredata矩阵为字符而不是数字。当它基本上拒绝让您弄乱其他数据时,作者发出了警告,但您忽略了它(直到我做了一些额外的工作,我才理解)。您可以构造一个数字向量来进行分组:
> tester$tod <- NA
> tester$tod["T06:00/T06:20"]<-1
> tester$tod["T06:21/T11:30"]<-2
> tester$tod["T06:31/T06:50"]<-3
>
> tester$group = 1
> (mean_all <- aggregate(.~group, data=tester, FUN=mean, na.rm = TRUE, na.action=NULL))
group a b c tod
1 1 15.5 45.5 44.5 2.133333
> (meann_tod <- aggregate(.~tod, data=tester, FUN=mean, na.rm = TRUE, na.action=NULL))
tod a b c group
1 1 4.5 34.5 11.5 1
2 2 13.5 43.5 38.5 1
3 3 24.5 54.5 71.5 1
>测试器$tod测试器$tod[“T06:00/T06:20”]测试器$tod[“T06:21/T11:30”]测试器$tod[“T06:31/T06:50”]
>测试仪$group=1
>(指所有人)
> tester$tod <- NA
> tester$tod["T06:00/T06:20"]<-1
> tester$tod["T06:21/T11:30"]<-2
> tester$tod["T06:31/T06:50"]<-3
>
> tester$group = 1
> (mean_all <- aggregate(.~group, data=tester, FUN=mean, na.rm = TRUE, na.action=NULL))
group a b c tod
1 1 15.5 45.5 44.5 2.133333
> (meann_tod <- aggregate(.~tod, data=tester, FUN=mean, na.rm = TRUE, na.action=NULL))
tod a b c group
1 1 4.5 34.5 11.5 1
2 2 13.5 43.5 38.5 1
3 3 24.5 54.5 71.5 1
> (meann_tod <- aggregate(cbind(a,b,c)~tod, data=tester, FUN=mean, na.rm = TRUE, na.action=NULL))
tod a b c
1 1 4.5 34.5 11.5
2 2 13.5 43.5 38.5
3 3 24.5 54.5 71.5