繁体   English   中英

如何通过R中几个表的行计算均值?

[英]How to calculate means by rows from several tables in R?

我有几个带有x,y,z坐标和时间戳的数据集。 我将单个数据文件加载到一个看起来像这样的对象中:

    [[1]]
    x;y;z;time
    -3.144;0.8554;-1.806;0.0724
    -3.144;0.8554;-1.806;0.0968
    -3.144;0.8554;-1.806;0.6275
    -3.144;0.8554;-1.806;0.6484
    -3.144;0.8554;-1.806;0.6611 
    ...
    [[2]]
    x;y;z;time
    -2.840;0.9775;-2.058;0.0724
    -2.832;0.9775;-2.058;0.0968
    -2.845;0.9775;-2.062;0.6275
    -2.833;0.9775;-2.067;0.6484
    -2.847;0.9775;-2.070;0.6611 
    ...

现在,我想编写一个新表,计算每个时间戳记每个数据文件的x,y,z平均值。 所以看起来像这样:

x.mean;y.mean.;z.mean;time
-2.992;0.916;-1.932;0.0724
-2.988;0.855;-1.806;0.0968
...

是否有可以做到这一点的功能/包装? 我已经尝试了多个软件包,但没有在那找到解决方案。

data.table在这里可能有效。 我假设您的对象是data.frame表的列表,它称为yourlistobject

library(data.table)

#Convert data to data.table and then stack all data onto of one another
big.list <- lapply(yourlistobject,setDT)
big.data <- rbindlist(big.list,fill=TRUE)

#Calculate means by timestamp
out <- big.data[, lapply(.SD,mean,na.rm=T), by=.(time)]
out

这是一种可行的快速而肮脏的方法。

iris1 = iris
iris2 = iris

iris1$Name = 'file1'
iris2$Name = 'file2'
iristotal = rbind(iris1,iris2)

data <- subset(iristotal, select= -c(Species, Name))
names <- subset(iristotal, select= c(Name))
aggregate( data,names, mean)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM