精华内容
下载资源
问答
  • r语言matrix
    千次阅读
    2021-02-25 14:21:25

    矩阵matrix函数

    矩阵是元素布置成二维矩形布局的R对象。 它们包含相同原子类型的元素。尽管我们可以创建只包含字符或只逻辑值的矩阵,但是它们没有多大用处。我们使用的是在数学计算中含有数字元素矩阵。

    matrix(data, nrow, ncol, byrow, dimnames)
    以下是所使用的参数的说明:

    1. data :输入向量
    2. nrow:矩阵行数
    3. ncol :矩阵列数
    4. byrow :逻辑值,如果为True,那么输入向量元素安排在行
    5. dimname:是分配给行和列名称
    > M <- matrix(c(3:14), nrow=4, byrow=TRUE)
    > M
         [,1] [,2] [,3]
    [1,]    3    4    5
    [2,]    6    7    8
    [3,]    9   10   11
    [4,]   12   13   14
    > M <- matrix(c(3:14), nrow=4, byrow=F)
    > M
         [,1] [,2] [,3]
    [1,]    3    7   11
    [2,]    4    8   12
    [3,]    5    9   13
    [4,]    6   10   14
    > M <- matrix(c(3:14), nrow=4, byrow=F,dimname=list(c(5:8),c('A','B','C')))
    > M
      A  B  C
    5 3  7 11
    6 4  8 12
    7 5  9 13
    8 6 10 14
    > rownames = c("row1", "row2", "row3", "row4")
    > colnames = c("col1", "col2", "col3")
    > P <- matrix(c(3:14), nrow=4, byrow=TRUE, dimnames=list(rownames, colnames))
    > P
         col1 col2 col3
    row1    3    4    5
    row2    6    7    8
    row3    9   10   11
    row4   12   13   14
    
    更多相关内容
  • R语言中有根据矩阵绘制色块图的程序,可以用于绘制相关系数矩阵图,用丰富的颜色和形状形象的展示矩阵元素值的大小。今天介绍的是如何用matlab绘制矩阵色块图。
  • R语言 Matrix的使用

    万次阅读 多人点赞 2020-03-24 22:25:31
    参考博客:R语言初级教程(13): 矩阵(上篇) R语言初级教程(15): 矩阵(下篇) 注:如有侵权,请告之,删之。 序言 R中有5种基本数据结构,分别是向量(vector)、矩阵(matrix)、数组(array)、数据框(data frame)和...

    注意:本篇文章是源自以下博客,为了方便查看特意做成一篇博客
    参考博客:R语言初级教程(13): 矩阵(上篇)
    R语言初级教程(15): 矩阵(下篇)
    注:如有侵权,请告之,删之。

    序言

    R中有5种基本数据结构,分别是向量(vector)矩阵(matrix)数组(array)数据框(data frame)列表(list)。它们的结构如下图:
    Refused

    注意:其中向量、矩阵和数组中的数据类型必须是相同的;而数据框和列表中的数据类型可以是不一样的。

    首先介绍矩阵,矩阵是一个二维数组。这篇博客将主要介绍矩阵的创建、元素的访问以及元素的修改…

    1. 创建矩阵

    在R中,使用matrix()函数来创建矩阵是最常用的方式。matrix()的原型为:matrix(data=NA, nrow=1, ncol = 1, byrow=FALSE, dimnames=NULL),其中参数的意义分别为:

    data:包含了矩阵的元素,一般是个向量,默认情况下是NA
    nrow和ncol:设定矩阵的行、列数目;一般这两个值只需设定一个,另外一个值可根据元素个数自动给出
    byrow:设定矩阵是按行(byrow=TRUE)填充还是按 列(byrow=FALSE)填充,默认情况下按列填充
    dimnames:包含了以字符型向量表示的行名和列名,是一个列表,默认情况下没有行列名

    来看些例子:

    c <- matrix(1:24, nrow = 3)#默认按列填充
    

    结果:
    Refused

    c = matrix(1:24,byrow = TRUE, nrow = 3)#按行填充
    

    结果:
    Refused

    rnames <- c('R1', 'R2')   ##行名
    cnames <- c('C1', 'C2', 'C3')  ##列名
    mat3 <- matrix(1:6, nrow=2, dimnames=list(rnames, cnames))   ##通过设定dimnames参数添加行列名
    

    Refused

    也可通过使用rownames()、colnames()函数来给矩阵添加行、列名

    rownames(mat) <- c("R1", "R2", "R3")
    colnames(mat) <- c("C1","C2")
    

    结果:
    Refused
    此外,也可通过使用dim()函数来创建矩阵,其原理是通过改变维度使向量变为矩阵。比如:

    mat4 <- 1:6   ##向量
    > dim(mat4) <- c(3, 2)  ##变为3行2列的矩阵
    > is.matrix(mat4)   ##判断是否为矩阵
    [1] TRUE
    > mat4
    

    结果:
    Refused

    > mat4 <- 1:6
    > dim(mat4) <- c(2, 3)   ##与上面不一样
    > mat4 <- t(mat4)   ##矩阵转置
    > mat4
    

    结果:
    Refused

    2. 矩阵的属性

    > mat <- matrix(1:6, nrow=2, dimnames=list(rnames, cnames)) 
    > mat
       C1 C2 C3
    R1  1  3  5
    R2  2  4  6
    > class(mat)  ##结构类型
    [1] "matrix"
    > typeof(mat)  ##元素数据类型
    [1] "integer"
    > dim(mat)  ##维度,2行3列
    [1] 2 3
    > length(mat)  ##元素个数
    [1] 6
    > rownames(mat)  ##获取行名
    [1] "R1" "R2"
    > colnames(mat)  ##获取列名
    [1] "C1" "C2" "C3"
    

    3. 访问矩阵中的元素

    类似于向量元素的访问,只是增加了一个维度而已。来看一些例子:

    > mat <- matrix(1:9, nrow=3, dimnames=list(c('r1', 'r2', 'r3'), c('c1', 'c2', 'c3'))) 
    > mat
       c1 c2 c3
    r1  1  4  7
    r2  2  5  8
    r3  3  6  9
    > mat[2, 2]  ##访问第2行第2列元素
    [1] 5
    > mat[2, ]  ##访问第2行元素
    c1 c2 c3 
     2  5  8 
    > is.vector(mat[2, ])  ##返回为向量
    [1] TRUE
    > mat[, 2]  ##访问第2列元素
    r1 r2 r3 
     4  5  6 
    > mat[c(2, 3), c(2, 3)]  ##访问第2、3行第2、3列元素,返回为矩阵
       c2 c3
    r2  5  8
    r3  6  9
    
    ### 也可通过行、列名来访问元素
    > mat['r2', 'c2']
    [1] 5
    > mat['r2', ]
    c1 c2 c3 
     2  5  8 
    > mat[c('r2','r3'), c('c2','c3')]
       c2 c3
    r2  5  8
    r3  6  9
    

    值得注意的是,当用上面的方式获取某个或某行或某列元素时,返回的是一个向量。如何使返回值也为矩阵呢?来看个例子:

    > mat[2, 2, drop=FALSE]
       c2
    r2  5
    > mat[2, , drop=FALSE]
       c1 c2 c3
    r2  2  5  8
    
    > is.matrix(mat[2, 2, drop=FALSE])   ##返回的是个矩阵
    [1] TRUE
    > is.matrix(mat[2, , drop=FALSE])   ##返回的是个矩阵
    [1] TRUE
    

    通过将参数drop设定为FALSE,返回的将会是个矩阵

    4. 修改矩阵中的元素

    类似于向量,我们可以通过赋值运算来改变矩阵中的内容,比如:

    > mat <- matrix(1:9, nrow=3) 
    > mat
         [,1] [,2] [,3]
    [1,]    1    4    7
    [2,]    2    5    8
    [3,]    3    6    9
    
    > mat[2, 2] <- 20   ##将第2行第2列元素改为20
    > mat
         [,1] [,2] [,3]
    [1,]    1    4    7
    [2,]    2   20    8
    [3,]    3    6    9
    
    > mat[ ,3] <- 10   ##将第3列元素都改为10
    > mat
         [,1] [,2] [,3]
    [1,]    1    4   10
    [2,]    2   20   10
    [3,]    3    6   10
    
    > mat[mat<6] <- 7   ##将小于6的元素都改为7
    > mat
         [,1] [,2] [,3]
    [1,]    7    7   10
    [2,]    7   20   10
    [3,]    7    6   10
    
    > mat <- mat[-2, ]   ##删掉第二行
    > mat
         [,1] [,2] [,3]
    [1,]    7    7   10
    [2,]    7    6   10
    

    另外,通过rbind()和cbind()函数可添加行和列,来看个例子:

    > mat <- matrix(1:9, nrow=3) 
    > mat
         [,1] [,2] [,3]
    [1,]    1    4    7
    [2,]    2    5    8
    [3,]    3    6    9
    
    > rbind(mat, c(12, 13, 14))   ##在原矩阵mat后面添加一行
         [,1] [,2] [,3]
    [1,]    1    4    7
    [2,]    2    5    8
    [3,]    3    6    9
    [4,]   12   13   14
    
    > cbind(mat, c(12, 13, 14))   ##在原矩阵mat后面添加一列
         [,1] [,2] [,3] [,4]
    [1,]    1    4    7   12
    [2,]    2    5    8   13
    [3,]    3    6    9   14
    

    5、矩阵的行、列计算

    我们知道,通过下标索引[i, j]可以访问矩阵的某一部分,索引如果没有提供意味着“所有行”或“所有列”。来看个例子,比如:

    x <- matrix(1:12, ncol=3)
    ![Refused](https://img-blog.csdnimg.cn/20200324220653370.png)
    
    > mean(x[,3])    ##求第三列的平均值,行索引i没提供,意味着“所有行”
    [1] 10.5
    

    refused

    > var(x[2,])   ##求第二行的方差,列索引j没提供,意味着“所有列”
    

    在这里插入图片描述
    在R中,可以用一些特殊的函数来进行矩阵的行、列计算。来看些例子:

    > x <- matrix(1:12, ncol=3)
    

    在这里插入图片描述

    rowSums(x)    ## 行和
    

    在这里插入图片描述
    colSums(x) ## 列和
    在这里插入图片描述

    rowMeans(x)    ## 行平均
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200324221103564.png)
    colMeans(x)    ## 列平均
    

    在这里插入图片描述

    注意:上面四个函数都是R内建函数,当矩阵中没有NA和NaN时,计算效率非常高。

    上述矩阵的行、列计算,还可以使用apply()函数来实现。apply()函数的原型为apply(X, MARGIN, FUN, …),其中:X为矩阵或数组;MARGIN用来指定是对行运算还是对列运算,MARGIN=1表示对行运算,MARGIN=2表示对列运算;FUN用来指定运算函数;…用来指定FUN中需要的其它参数。来看些例子:

    用apply()函数来实现上面的例子

    > x <- matrix(1:12, ncol=3)
    > x
         [,1] [,2] [,3]
    [1,]    1    5    9
    [2,]    2    6   10
    [3,]    3    7   11
    [4,]    4    8   12
    
    > apply(x, 1, sum)    ## 行和
    [1] 15 18 21 24
    > apply(x, 2, sum)    ## 列和
    [1] 10 26 42
    > apply(x, 1, mean)    ## 行平均
    [1] 5 6 7 8
    > apply(x, 2, mean)    ## 列平均
    [1]  2.5  6.5 10.5
    apply()函数功能很强大,我们可以对矩阵的行或列进行其它运算,例如:
    
    > apply(x, 2, var)   ##每列方差
    [1] 1.666667 1.666667 1.666667
    > apply(x, 1, max)  ##每行最大值
    [1]  9 10 11 12
    

    如果矩阵存在NA值,可通过设置na.rm=TRUE来忽略NA值,然后再计算。比如:

    > x <- matrix(c(1:5,NA, 7:12), ncol=3)
    > x
         [,1] [,2] [,3]
    [1,]    1    5    9
    [2,]    2   NA   10
    [3,]    3    7   11
    [4,]    4    8   12
    > apply(x, 1, mean)
    [1]  5 NA  7  8
    > apply(x, 1, mean, na.rm=TRUE)
    [1] 5 6 7 8
    

    其中上面的na.rm参数来自mean()函数
    甚至我们还可以自定义运算函数,来看个例子:

    > x <- matrix(c(1:5,NA, 7:12), ncol=3)
    > x
         [,1] [,2] [,3]
    [1,]    1    5    9
    [2,]    2   NA   10
    [3,]    3    7   11
    [4,]    4    8   12
    
    > apply(x, 2, function(x, a, b) x*a+b, a=2, b=1)   ##自定义函数
         [,1] [,2] [,3]
    [1,]    3   11   19
    [2,]    5   NA   21
    [3,]    7   15   23
    [4,]    9   17   25
    > x*2+1
         [,1] [,2] [,3]
    [1,]    3   11   19
    [2,]    5   NA   21
    [3,]    7   15   23
    [4,]    9   17   25
    

    注意:apply(x, 2, function(x, a, b) xa+b, a=2, b=1)与x2+1效果相同,此处旨在说明如何应用apply()函数

    6.rbind()和cbind()函数

    在R中,rbind()和cbind()函数可分别为矩阵添加行和列,来看一个例子:

    > x <- matrix(1:12, ncol=3)
    > x
         [,1] [,2] [,3]
    [1,]    1    5    9
    [2,]    2    6   10
    [3,]    3    7   11
    [4,]    4    8   12
    
    > x <- rbind(x, apply(x, 2, mean))     ##添加一行,元素分别为每列平均值
    > x
         [,1] [,2] [,3]
    [1,]  1.0  5.0  9.0
    [2,]  2.0  6.0 10.0
    [3,]  3.0  7.0 11.0
    [4,]  4.0  8.0 12.0
    [5,]  2.5  6.5 10.5
    
    > x <- cbind(x, apply(x, 1, sum))     ##添加一列,元素分别为每行求和值
    > x
         [,1] [,2] [,3] [,4]
    [1,]  1.0  5.0  9.0 15.0
    [2,]  2.0  6.0 10.0 18.0
    [3,]  3.0  7.0 11.0 21.0
    [4,]  4.0  8.0 12.0 24.0
    [5,]  2.5  6.5 10.5 19.5
    
    > rownames(x) <- c(1:4, 'mean')   ## 添加行名
    > colnames(x) <- c(1:3, 'sum')   ## 添加列名
    > x
           1   2    3  sum
    1    1.0 5.0  9.0 15.0
    2    2.0 6.0 10.0 18.0
    3    3.0 7.0 11.0 21.0
    4    4.0 8.0 12.0 24.0
    mean 2.5 6.5 10.5 19.5
    

    7.row()和col()函数

    在R中,row()和col()函数将分别返回元素的行和列下标矩阵,来看个例子:

    > x <- matrix(1:12, ncol=3)
    > x
         [,1] [,2] [,3]
    [1,]    1    5    9
    [2,]    2    6   10
    [3,]    3    7   11
    [4,]    4    8   12
    
    > row(x)     ##返回元素的行下标矩阵
         [,1] [,2] [,3]
    [1,]    1    1    1
    [2,]    2    2    2
    [3,]    3    3    3
    [4,]    4    4    4
    > col(x)     ##返回元素的列下标矩阵
         [,1] [,2] [,3]
    [1,]    1    2    3
    [2,]    1    2    3
    [3,]    1    2    3
    [4,]    1    2    3
    

    通过这两个函数,可以获取矩阵的对角元素以及上下三角矩阵,例如:

    > x <- matrix(1:12, ncol=3)
    > x
         [,1] [,2] [,3]
    [1,]    1    5    9
    [2,]    2    6   10
    [3,]    3    7   11
    [4,]    4    8   12
    
    > dx <- x[row(x)==col(x)]    ## 获取对角元素
    > dx
    [1]  1  6 11
    > diag(x)    ##也可通过diag()函数获取对角元素,速度将更快、更简单
    [1]  1  6 11
    
    > x[row(x)>col(x)] <- 0   ##结果为上三角矩阵,通过赋值运算将所有下三角元素变为0
    > x
         [,1] [,2] [,3]
    [1,]    1    5    9
    [2,]    0    6   10
    [3,]    0    0   11
    [4,]    0    0    0
    

    8.rowsum()和aggregate()函数

    有时,你可能需要对每行进行分组,然后组内每列求和。在R中可以用rowsum()函数来解决,而且效率也非常高。先看个例子:

    > x <- matrix(1:12, ncol=3)
    > x
         [,1] [,2] [,3]
    [1,]    1    5    9
    [2,]    2    6   10
    [3,]    3    7   11
    [4,]    4    8   12
    
    > group <- c('A', 'B', 'A', 'B')   ##分组向量
    > rowsum(x, group)   ##组内每列求和
      [,1] [,2] [,3]
    A    4   12   20
    B    6   14   22
    

    你也可以用aggregate()函数获得类似结果:

    > aggregate(x, list(group), sum)
      Group.1 V1 V2 V3
    1       A  4 12 20
    2       B  6 14 22
    

    aggregate()函数的功能很强大。
    有人就会问“为啥没有列分组求和的操作?”,其实你可以先将矩阵转置,然后行分组求和;这两步就等同于列分组求和。

    9. sweep()函数

    sweep()函数的原型为sweep(x, MARGIN, STATS, FUN = “-”, check.margin = TRUE, …),其中:x为矩阵或数组;MARGIN用来指定是对行运算还是对列运算,MARGIN=1表示对行运算,MARGIN=2表示对列运算;STATS表示想要清除的统计量;FUN用来指定运算函数,默认为减法-;check.margin用来核实x的维度是否与STATS的匹配,如果事先知道它们匹配的话,将其设为FALSE将提高运算速度; …用来指定FUN中需要的其它参数。来看些例子:

    > x <- matrix(1:12, ncol=3)
    > x
         [,1] [,2] [,3]
    [1,]    1    5    9
    [2,]    2    6   10
    [3,]    3    7   11
    [4,]    4    8   12
    > cols <- apply(x, 2, mean)   ##列平均
    > cols
    [1]  2.5  6.5 10.5
    
    > sweep(x, 2, cols)  ##每列减去其平均值
         [,1] [,2] [,3]
    [1,] -1.5 -1.5 -1.5
    [2,] -0.5 -0.5 -0.5
    [3,]  0.5  0.5  0.5
    [4,]  1.5  1.5  1.5
    
    > sweep(x, 2, cols, '+')  ##每列加上其平均值
         [,1] [,2] [,3]
    [1,]  3.5 11.5 19.5
    [2,]  4.5 12.5 20.5
    [3,]  5.5 13.5 21.5
    [4,]  6.5 14.5 22.5
    
    > sweep(x, 1, 1:4)  ##每行减去对应值,比如第一行元素都减1,第二行减2,第三行减3,第四行减4
         [,1] [,2] [,3]
    [1,]    0    4    8
    [2,]    0    4    8
    [3,]    0    4    8
    [4,]    0    4    8
    

    从上面的例子可以看出,sweep()函数的功能非常强,它可以对矩阵的行或列减去(默认情况)或加上不同的值
    事实上,通过改变FUN参数的具体形式或自定义函数,sweep()函数可以实现很多不同操作,这里就不细讲了。

    10. max.col()函数

    max.col()函数返回矩阵每行最大值所在的列位置(即列下标),其原型为max.col(m, ties.method = c(“random”, “first”, “last”)),其中:m为矩阵;当存在多个最大值时,ties.method指定用哪种方式来处理这种情况,默认为"random"(随机),"first"指使用第一个最大值,"last"指使用最后一个最大值。来看个官网例子:

    > set.seed(1)   ##通过设定随机数种子,使下面的结果可重复
    > mm <- rbind(x = round(2*stats::runif(12)),
                  y = round(5*stats::runif(12)),
                  z = round(8*stats::runif(12)))
    > mm
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
    x    1    1    1    2    0    2    2    1    1     0     0     0
    y    3    2    4    2    4    5    2    4    5     1     3     1
    z    2    3    0    3    7    3    4    5    4     1     7     5
    
    > max.col(mm)   ##random
    [1] 4 6 5
    > max.col(mm)   ##random,跟上面的结果不一样
    [1] 6 6 5
    > max.col(mm, 'first')
    [1] 4 6 5
    > max.col(mm, 'last')
    [1]  7  9 11
    

    我们也可以结合apply()和which.max()函数来实现max.col(mm, ‘first’)。看个例子,

    > apply(mm, 1, which.max)
    x y z 
    4 6 5 
    > unname(apply(mm, 1, which.max))   ##通过unname函数去掉向量的名称
    [1] 4 6 5
    
    展开全文
  • matrixplot_R语言相关系数图形绘制_r语言matrixplot_色块_matrixplot_色块图.zip
  • R语言使用matrix函数生成指定大小且数值固定的矩阵

    R语言使用matrix函数生成指定大小且数值固定的矩阵

    目录

    R语言使用matrix函数生成指定大小且数值固定的矩阵

    R语言是解决什么问题的?

    R语言使用matrix函数生成指定大小且数值固定的矩阵

    安利一个R语言的优秀博主及其CSDN专栏:


    R语言是解决什么问题的?

    R 是一个有着统计分析功能及强大作图功能的软件系统,是由奥克兰大学统计学系的Ross Ihaka 和 Robert Gentleman 共同创立。由于R 受Becker, Chambers & Wilks 创立的S 和Sussman 的Scheme 两种语言的影响,所以R 看起来和S 语言非常相似。

    R语言被称作R的部分是因为两位R 的作者(Robert Gentleman 和Ross Ihaka) 的姓名,部分是受到了贝尔实验室S 语言的影响(称其为S 语言的方言)。

    R 语言是为数学研究工作者设计的一种数学编程语言,主要用于统计分析、绘图、数据挖掘。

    如果你是一个计算机程序的初学者并且急切地想了解计算机的通用编程,R 语言不是一个很理想的选择,可以选择 PythonC 或 Java

    R 语言与 C 语言都是贝尔实验室的研究成果,但两者有不同的侧重领域,R 语言是一种解释型的面向数学理论研究工作者的语言,而 C 语言是为计算机软件工程师设计的。

    R 语言是解释运行的语言(与 C 语言的编译运行不同),它的执行速度比 C 语言慢得多,不利于优化。但它在语法层面提供了更加丰富的数据结构操作并且能够十分方便地输出文字和图形信息,所以它广泛应用于数学尤其是统计学领域。

    R语言使用matrix函数生成指定大小且数值固定的矩阵

    m = matrix(1, nrow=2, ncol=2)
    n = matrix(2, nrow=2, ncol=2)
    print(m)
    print(n)

    安利一个R语言的优秀博主及其CSDN专栏:

    博主博客地址:

    Data+Science+Insight的博客_CSDN博客-R语言从入门到机器学习,数据科学从0到1,机器学习面试+横扫千军领域博主

    statistics+insight的博客_CSDN博客-R语言入门课,Excel入门到精通,数据科学持续学习领域博主

    R语言从入门到机器学习、持续输出已经超过1500篇文章、从统计学到机器学习、从可视化到数据分析

    参考:R

    展开全文
  • -MEI[tempdata[i,'year'],tempdata[i,'month']] matrix[rname,cname] 比如:list.files()得到当前wd的所有文件名字 比如:sapply(tempdata$Date,function(x){strsplit(x,"-")[[1]][1]}) 根据指定分隔符...

    比如:tempdata[i,'MEI']<-MEI[tempdata[i,'year'],tempdata[i,'month']]   matrix[rname,cname]

    比如:list.files()得到当前wd的所有文件名字

    比如:sapply(tempdata$Date,function(x){strsplit(x,"-")[[1]][1]})   根据指定分隔符位置划分字符串,如提取年月

    比如:tapply(O18,list(group),function(x){mean(x,na.rm = T)})    根据分组变量应用匿名函数,tapply()

    #geology
    #set the wd
    setwd("C:/Users/Administrator/Desktop/mission/geology/data")
    setwd("C:/Users/jack/Desktop/mission/correlation/geology/data")
    #load the MEI
    MEI <- as.data.frame(read_excel("C:/Users/Administrator/Desktop/mission/geology/MEI.xlsx"))
    MEI <- as.data.frame(read_excel("C:/Users/jack/Desktop/mission/correlation/geology/MEI.xlsx"))


    #reconstruct the MEI file
    rownames(MEI) <- MEI$YEAR
    MEI<-MEI[,-c(1)]
    colnames(MEI)
    rownames(MEI)
    MEI['1950','01']

    #load the names of excels
    myfiles0 <- list.files()

    #extract the names of the cities
    library(stringr)
    city_names<-c()

    for ( nameexcel in myfiles0){
      temp<-str_sub(nameexcel,1,str_locate(nameexcel,"\\.")[1]-1)
      city_names<-c(city_names,temp)
    }

    ####create the table
    table1<-matrix(NA,nrow = 39,ncol = 11)
    tempdata_all<-as.data.frame(matrix(NA,nrow=1,ncol=12))
    names(tempdata_all)<-names(tempdata)

    table3<-matrix(NA,nrow = 39,ncol = 5)
    ####loops
    library(readxl)
    for (i in 1:length(myfiles0)){
      tempfile<-as.data.frame(read_excel(myfiles0[i]))
      tempdata <- tempfile[c(4,6:8,13,17,25,24)]
      
      tempdata$year<-sapply(tempdata$Date,function(x){strsplit(x,"-")[[1]][1]})
      tempdata$month<-sapply(tempdata$Date,function(x){strsplit(x,"-")[[1]][2]})
      
      for(j in 1:nrow(tempdata)){
        tempdata[j,'MEI']<-MEI[tempdata[j,'year'],tempdata[j,'month']]
      }
      
    #  tempdata$group[tempdata$MEI<0] <- -1
    #  tempdata$group[tempdata$MEI>0] <- 1
      tempdata$group[tempdata$year==1972|tempdata$year==1973|tempdata$year==1982|tempdata$year==1983|tempdata$year==1997|tempdata$year==1998|tempdata$year==2014|tempdata$year==2015|tempdata$year==2016] <- -1
      tempdata$group[tempdata$year!=1972 & tempdata$year!=1973 & tempdata$year!=1982 & tempdata$year!=1983 & tempdata$year!=1997 & tempdata$year!=1998 & tempdata$year!=2014 & tempdata$year!=2015 & tempdata$year!=2016] <- 1
      
       
      names(tempdata)<-c(names(tempdata[1:6]),'Air_Temperature',names(tempdata[8:12]))
      
      attach(tempdata)
      col1<-city_names[i]
      col2<-unique(tempdata$Country)
      col3<-mean(Latitude)
      col4<-mean(Longitude)
      col5<-mean(Altitude)
      col6<-as.numeric(tapply(O18,list(group),function(x){mean(x,na.rm = T)}))[1]
      col7<-as.numeric(tapply(O18,list(group),function(x){mean(x,na.rm = T)}))[2]
      col8<-as.numeric(tapply(Air_Temperature,list(group),function(x){mean(x,na.rm = T)}))[1]
      col9<-as.numeric(tapply(Air_Temperature,list(group),function(x){mean(x,na.rm = T)}))[2]
      col10<-as.numeric(tapply(Precipitation,list(group),function(x){mean(x,na.rm = T)}))[1]
      col11<-as.numeric(tapply(Precipitation,list(group),function(x){mean(x,na.rm = T)}))[2]

      table1[i,1]<-col1
      table1[i,2]<-col2
      table1[i,3]<-col3
      table1[i,4]<-col4
      table1[i,5]<-col5
      table1[i,6]<-col6
      table1[i,7]<-col7
      table1[i,8]<-col8
      table1[i,9]<-col9
      table1[i,10]<-col10
      table1[i,11]<-col11
      
      #for table2
      tempdata_all<-rbind(tempdata_all,tempdata)
      
      #for table3
      table3[i,1]<-col1
      table3[i,2]<-as.numeric(t.test(tempdata$Precipitation[tempdata$group==-1],tempdata$Precipitation[tempdata$group==1])[[1]])
      table3[i,3]<-as.numeric(t.test(tempdata$Precipitation[tempdata$group==-1],tempdata$Precipitation[tempdata$group==1])[[3]])
      
      if (sum(is.na(tempdata$Air_Temperature[tempdata$group==-1]))==length(tempdata$Air_Temperature[tempdata$group==-1])){
        table3[i,4]<-NA
        table3[i,5]<-NA
      } else{
        table3[i,4]<-as.numeric(t.test(tempdata$Air_Temperature[tempdata$group==-1],tempdata$Air_Temperature[tempdata$group==1])[1])
        table3[i,5]<-as.numeric(t.test(tempdata$Air_Temperature[tempdata$group==-1],tempdata$Air_Temperature[tempdata$group==1])[3])
      }
      
      detach(tempdata)
      
    }

    #check the table1
    colnames(table1)<-c('Site','Country','Latitude','Longitude','Altitude(m)','O18(-)','O18(+)','Temperature(-)','Temperature(+)','Precipitation(-)','Precipitation(+)')
    write.table(table1,'C:/Users/Administrator/Desktop/mission/geology/table1.csv')

    #check the table3
    colnames(table3)<-c('Site','Precipitation(t-statistics)','Precipitation(p-value)','Air_Temperature(t-statistics)','Air_Temperature(p-value)')
    write.table(table3,'C:/Users/Administrator/Desktop/mission/geology/table3.csv')
    write.table(table3,'C:/Users/jack/Desktop/mission/correlation/geology/table3.csv')


    #construct table2
    tempdata_all<-tempdata_all[-c(1),]
    #for (-)
    cor(tempdata_all$O18[tempdata_all$group==-1],tempdata_all$Air_Temperature[tempdata_all$group==-1],use = 'complete.obs',method = 'spearman')
    cor(tempdata_all$O18[tempdata_all$group==-1],tempdata_all$Precipitation[tempdata_all$group==-1],use = 'complete.obs',method = 'spearman')
    cor(tempdata_all$O18[tempdata_all$group==-1],tempdata_all$Altitude[tempdata_all$group==-1],use = 'complete.obs',method = 'spearman')
    cor(tempdata_all$Altitude[tempdata_all$group==-1],tempdata_all$Air_Temperature[tempdata_all$group==-1],use = 'complete.obs',method = 'spearman')
    cor(tempdata_all$Altitude[tempdata_all$group==-1],tempdata_all$Precipitation[tempdata_all$group==-1],use = 'complete.obs',method = 'spearman')
    cor(tempdata_all$Air_Temperature[tempdata_all$group==-1],tempdata_all$Precipitation[tempdata_all$group==-1],use = 'complete.obs',method = 'spearman')

    cor.test(tempdata_all$O18[tempdata_all$group==-1],tempdata_all$Air_Temperature[tempdata_all$group==-1],exact = TRUE,use = 'complete.obs',method = 'spearman')
    cor.test(tempdata_all$O18[tempdata_all$group==-1],tempdata_all$Precipitation[tempdata_all$group==-1],exact = TRUE,use = 'complete.obs',method = 'spearman')
    cor.test(tempdata_all$O18[tempdata_all$group==-1],tempdata_all$Altitude[tempdata_all$group==-1],exact = TRUE,use = 'complete.obs',method = 'spearman')
    cor.test(tempdata_all$Altitude[tempdata_all$group==-1],tempdata_all$Air_Temperature[tempdata_all$group==-1],exact = TRUE,use = 'complete.obs',method = 'spearman')
    cor.test(tempdata_all$Altitude[tempdata_all$group==-1],tempdata_all$Precipitation[tempdata_all$group==-1],exact = TRUE,use = 'complete.obs',method = 'spearman')
    cor.test(tempdata_all$Air_Temperature[tempdata_all$group==-1],tempdata_all$Precipitation[tempdata_all$group==-1],exact = TRUE,use = 'complete.obs',method = 'spearman')


    #for (+)
    cor(tempdata_all$O18[tempdata_all$group==1],tempdata_all$Air_Temperature[tempdata_all$group==1],use = 'complete.obs',method = 'spearman')
    cor(tempdata_all$O18[tempdata_all$group==1],tempdata_all$Precipitation[tempdata_all$group==1],use = 'complete.obs',method = 'spearman')
    cor(tempdata_all$O18[tempdata_all$group==1],tempdata_all$Altitude[tempdata_all$group==1],use = 'complete.obs',method = 'spearman')
    cor(tempdata_all$Altitude[tempdata_all$group==1],tempdata_all$Air_Temperature[tempdata_all$group==1],use = 'complete.obs',method = 'spearman')
    cor(tempdata_all$Altitude[tempdata_all$group==1],tempdata_all$Precipitation[tempdata_all$group==1],use = 'complete.obs',method = 'spearman')
    cor(tempdata_all$Air_Temperature[tempdata_all$group==1],tempdata_all$Precipitation[tempdata_all$group==1],use = 'complete.obs',method = 'spearman')

    cor.test(tempdata_all$O18[tempdata_all$group==1],tempdata_all$Air_Temperature[tempdata_all$group==1],exact = TRUE,use = 'complete.obs',method = 'spearman')
    cor.test(tempdata_all$O18[tempdata_all$group==1],tempdata_all$Precipitation[tempdata_all$group==1],exact = TRUE,use = 'complete.obs',method = 'spearman')
    cor.test(tempdata_all$O18[tempdata_all$group==1],tempdata_all$Altitude[tempdata_all$group==1],exact = TRUE,use = 'complete.obs',method = 'spearman')
    cor.test(tempdata_all$Altitude[tempdata_all$group==1],tempdata_all$Air_Temperature[tempdata_all$group==1],exact = TRUE,use = 'complete.obs',method = 'spearman')
    cor.test(tempdata_all$Altitude[tempdata_all$group==1],tempdata_all$Precipitation[tempdata_all$group==1],exact = TRUE,use = 'complete.obs',method = 'spearman')
    cor.test(tempdata_all$Air_Temperature[tempdata_all$group==1],tempdata_all$Precipitation[tempdata_all$group==1],exact = TRUE,use = 'complete.obs',method = 'spearman')

    #construct table3

    ##################################one loop for matching#################################
    tempfile<-as.data.frame(read_excel(myfiles0[16]))
    tempdata <- tempfile[c(4,6:8,13,17,25,24)]

    tempdata$year<-sapply(tempdata$Date,function(x){strsplit(x,"-")[[1]][1]})
    tempdata$month<-sapply(tempdata$Date,function(x){strsplit(x,"-")[[1]][2]})

    for(i in 1:nrow(tempdata)){
      tempdata[i,'MEI']<-MEI[tempdata[i,'year'],tempdata[i,'month']]
    }

    tempdata$group[tempdata$MEI<0] <- -1
    tempdata$group[tempdata$MEI>0] <- 1

    names(tempdata)<-c(names(tempdata[1:6]),'Air_Temperature',names(tempdata[8:12]))

    #for winter 
    mean(tempdata$O18[tempdata$group==-1 & (tempdata$month==11|tempdata$month==12|tempdata$month==1|tempdata$month==2)],na.rm = T)
    mean(tempdata$O18[tempdata$group==1 & (tempdata$month==11|tempdata$month==12|tempdata$month==1|tempdata$month==2)],na.rm = T)


    attach(tempdata)
    col1<-city_names[10]
    col2<-unique(tempdata$Country)
    col3<-mean(Latitude)
    col4<-mean(Longitude)
    col5<-mean(Altitude)
    col6<-as.numeric(tapply(O18,list(group),function(x){mean(x,na.rm = T)}))[1]
    col7<-as.numeric(tapply(O18,list(group),function(x){mean(x,na.rm = T)}))[2]
    col8<-as.numeric(tapply(Air_Temperature,list(group),function(x){mean(x,na.rm = T)}))[1]
    col9<-as.numeric(tapply(Air_Temperature,list(group),function(x){mean(x,na.rm = T)}))[2]
    col10<-as.numeric(tapply(Precipitation,list(group),function(x){mean(x,na.rm = T)}))[1]
    col11<-as.numeric(tapply(Precipitation,list(group),function(x){mean(x,na.rm = T)}))[2]
    detach(tempdata)


    as.numeric(t.test(tempdata$Precipitation[tempdata$group==-1],tempdata$Precipitation[tempdata$group==1])[[1]])
    as.numeric(t.test(tempdata$Precipitation[tempdata$group==-1],tempdata$Precipitation[tempdata$group==1])[[3]])

    as.numeric({t.test(tempdata$Air_Temperature[tempdata$group==-1],tempdata$Air_Temperature[tempdata$group==1])[[1]]})
    as.numeric(t.test(tempdata$Air_Temperature[tempdata$group==-1],tempdata$Air_Temperature[tempdata$group==1])[[3]])

     

     

     

     

     

     


     

     

     

     

     

     

     

     

     

     

    展开全文
  • 简单来说,R语言中的vector是一个包含许多元素的一维数据结构,类似Python里的列表。下面的命令可以构造一个简单的R语言向量: #c()函数意思为connect,它把括号里的内容整合成一个vector或list myVec1 <- c(1, 2...
  • R语言矩阵matrix数据类型、生成示例matrix数据、为矩阵添加行名称和列名称、使用中括号[]索引matrix数据、矩阵matrix实战
  • R matrix函数详解

    万次阅读 2019-03-05 16:44:37
    R中将向量转换为matrix的时候,默认按照先行后列的顺序。 例子1: matrix(c(10,1,6,12),nrow=2) [,1] [,2] [1,] 10 6 [2,] 1 12 例子2: matrix(c(10,1,6,12),ncol=2) [,1] [,2] [1,] 10 6 [2,] 1 12 ...
  • R语言-matrix函数创建矩阵特殊情况

    千次阅读 2020-10-17 09:49:19
    R语言-matrix函数创建矩阵特殊情况 创建矩阵的函数为matrix(data=x,nrow=y,ncol=z,byrow=FALSE,dimnames=NULL) data参数为矩阵元素; nrow参数:矩阵的行数; ncol参数:矩阵的列数; byrow参数:矩阵元素是否按行...
  • R语言使用matrix函数创建空矩阵、使用nrow参数和ncol参数指定矩阵的行列数、使用rownames函数为矩阵的数据行指定行名称
  • 定义一个matrix对象D1,一个data.frame对象D2 二、数据切片 1、提取第2行,第2列 其中,D2提取一行返回一个data.frame,其余返回vector 2、提取第2-3行,第2-3列 其中,D2提取多行或多列返回一个data....
  • r语言初接触,小白求问,数据类型怎么由matrix变成二维numberic。 在百度上看,矩阵就是二维的数组。我现在想要从一批数据中提取第某行至某行。data1<-apply(data[10:80,],2,as.numeric),我若只提取10到80行数据...
  • R语言使用matrix函数创建空矩阵、使用nrow参数和ncol参数指定矩阵的行列数
  • 在单细胞领域,稀疏矩阵对于处理 scRNA-seq 表达谱数据是非常必要的,构建分析对象的时候它们消耗更低的内存。本文重点介绍 R语言 稀疏矩阵对象格式,稀疏矩阵的重构, 稀疏矩阵与稠密矩阵的相互转换。...
  • matrix_data=read.csv("matrix.csv",header = T,row.names = 1)
  • R语言使用as.matrix函数将dataframe数据转化为矩阵数据(dataframe to matrix
  • R语言-matrix生成矩阵

    万次阅读 2018-11-22 13:09:16
    R语言中可以使用matrix()函数来创建矩阵,其语法格式如下: matrix(data=NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL) 参数含义如下: data:矩阵的元素,默认为NA,即未给出元素值的话,各项为NA...
  • MATRIX(二维数组):可以保存数字、字符或逻辑值。矩阵中的元素都具有相同的数据类型。 DATAFRAME(二维对象):可以保存数字、字符或逻辑值。在一个列中,所有元素都具有相同的数据类型,但不同的列可以具有不同的...
  • R语言使用caret包的confusionMatrix函数计算混淆矩阵、使用编写的自定义函数可视化混淆矩阵(confusion matrix
  • R语言自定义多分类混淆矩阵可视化函数(mutlti class confusion matrix)、R语言多分类混淆矩阵可视化
  • 矩阵Matrix之前我们讲了向量,向量就仿佛一个一维数组一样那么我们接下来就讲讲二维数组创建一个matrix需要用到matrix函数 注意这里matrix是没有保存的 martix(参数1,nrow=行数,ncol=列数,byrow=布尔值)参数1:...
  • R语言使用matrix函数生成指定大小且数值固定的矩阵、使用nrow参数指定行个数、使用ncol参数指定列个数
  • R语言使用matrix函数创建空矩阵、使用nrow参数和ncol参数指定矩阵的行列数、按照列的方式依次给矩阵的每个位置赋值
  • R语言矩阵matrix函数

    千次阅读 2021-05-22 16:35:32
    矩阵是元素布置成二维矩形布局的R对象。 它们包含相同原子类型的...语法R语言中创建矩阵的基本语法是:matrix(data, nrow, ncol, byrow, dimnames)以下是所使用的参数的说明:data-是这成为矩阵的数据元素输入向量...
  • R语言矩阵(matrix)详解

    万次阅读 2014-09-11 14:18:44
    数据: 1 3 9 8 9 80 1 4 2 7 88 1 22 21 ...1)向量转化为矩阵c—>matrix tmp_matrix tmp_matrix tmp_matrix 或者 tmp_matrix tmp_matrix tmp_matrix 数据: col1 col2 col3 col4 col5 col6 col
  • R语言将向量数据转化为矩阵数据(from vector to matrix
  • R语言使用pairs函数可视化散点图矩阵(scatter plot matrix
  • R语言nrow函数获取dataframe或者matrix行计数统计 目录 R语言nrow函数获取dataframe或者matrix行计数统计 #基本语法 #按照条件计算行数 #complete.cases函数查看数据完整的行数(没有NA和Null) # nrow函数...
  • R语言dim函数获取dataframe、matrix的维度、shape实战 目录 R语言dim函数获取dataframe、matrix的维度、shape实战 #基本语法 #dim获取数据的shape #获取所有列表项的维度 #基本语法 dim(data) #dim获取...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,447
精华内容 12,578
关键字:

r语言matrix