使用R将矩阵分解为平均时间段

时间:2015-10-12 17:55:13

标签: r

我需要像这样转换矩阵x

head(x)
       Age    d18O   d13C   
1     0.000   3.28   0.880   
2     0.000   3.58   0.150   
3     0.002   3.16   0.960    
4     0.002   2.91   3.228    
5     0.004   3.33   0.880    
6     0.004   3.16   3.328

tail(x)
           Age      d18O       d13C 
14883    66.3037    1.00       2.03    
14884    66.3159    1.02       1.70    
14885    66.3800    0.62       2.01    
14886    67.0073    1.30       1.23    
14887    67.2391    1.31       1.30      
14888    67.5173    1.36       1.35    

到一个矩阵中,包含0.5个时间段,每个变量的平均值,如:

      Age     count(x$d18O)   mean(x$d18O)
1       0      500            4.1003
2       0.5    522            4.079464
3       1      412            4.032743
4       1.5    366            3.810601
5       2      498            3.749257
6       2.5    608            3.649063
.       .       .                .
.       .       .                .

年龄以百万年为单位。

2 个答案:

答案 0 :(得分:2)

这应该可以解决问题:

library(dplyr)
x %>%
  mutate(age_bucket = cut(Age, seq(min(Age), max(Age), by = 0.05), include.lowest = TRUE)) %>%
  group_by(age_bucket) %>%
  summarise(n = n(),
            mean_d18O = mean(d18O))

答案 1 :(得分:1)

试试这个:

public class getInput {

    public static void main(String[] args) {
        for (int i = 0; i < args.length; i++) {
            System.out.println("arg " + i + ": " + arg);
        }
    }

}

你会得到类似的东西:

sdf=split(x,cut(x$Age,seq(0,max(x$Age)*1.01,by=.5)))
do.call(rbind,lapply(sdf,function(sx)c(length(sx$d18O),mean(sx$d18O))))