◮ R语言笔记(七): 利用Apply()函数在二维数据行、列上进行统计

版权声明:转载请注明出处 https://blog.csdn.net/qq_42292831/article/details/83035159

这里的二维数据可以是矩阵的形式也可以是数据框的形式,

通过apply()函数的正确使用,可以在二位数据的行、列上进行自己想要的操作:

例如:

每一列/每一行的数据之和sum、中位数median、均值mean和方差var等;

****************************************************************************************************************************************

 

★Apply() 函数:

  *首先给出相应的使用代码:

> x1 = c(12,45,78,89,56,23,15,48,75,42)
> x2 = c(23,56,89,48,59,26,15,48,78,99)
> x3 = c(56,78,55,66,44,22,11,33,10,58)
> cbind(x1,x2,x3)    #首先组成二维数组
      x1 x2 x3
 [1,] 12 23 56
 [2,] 45 56 78
 [3,] 78 89 55
 [4,] 89 48 66
 [5,] 56 59 44
 [6,] 23 26 22
 [7,] 15 15 11
 [8,] 48 48 33
 [9,] 75 78 10
[10,] 42 99 58

> x = cbind(x1,x2,x3)    #将二维数组复制给x

> apply(x,2,max)
x1 x2 x3 
89 99 78 
> apply(x,2,sum)
 x1  x2  x3 
483 541 433 
> apply(x,2,min)
x1 x2 x3 
12 15 10 
> apply(x,2,mean)
  x1   x2   x3 
48.3 54.1 43.3 
> apply(x,2,median)
  x1   x2   x3 
46.5 52.0 49.5 
> apply(x,2,sd)
      x1       x2       x3 
26.72514 28.27032 23.44284 
> apply(x,2,var)
      x1       x2       x3 
714.2333 799.2111 549.5667 
> apply(x,2,prod)
          x1           x2           x3 
1.095058e+16 4.692829e+16 3.231463e+15 
> apply(x,1,max)
 [1] 56 78 89 89 59 26 15 48 78 99

> apply(x,1,min)
 [1] 12 45 55 48 44 22 11 33 10 42
> apply(x,1,sum)
 [1]  91 179 222 203 159  71  41 129 163 199

 ★apply()函数分析:

    > apply(x,2,max)

       其中包含了三个参数,第一个参数是指定相应的二维数组;

       第二个参数如果是1就代表在行的方向上进行统计,如果是2就代表在列的方向上进行统计;

       第三个参数指出需要对数据进行操作的函数。

★利用which函数对Apply() 函数产生的数据的定位与查询:

> x
      x1 x2 x3
 [1,] 12 23 56
 [2,] 45 56 78
 [3,] 78 89 55
 [4,] 89 48 66
 [5,] 56 59 44
 [6,] 23 26 22
 [7,] 15 15 11
 [8,] 48 48 33
 [9,] 75 78 10
[10,] 42 99 58

> apply(x,1,sum)
 [1]  91 179 222 203 159  71  41 129 163 199

> which.max(apply(x,1,sum))
[1] 3

> x$x1[which.max(apply(x,1,sum))]   
Error in x$x1 : $ operator is invalid for atomic vectors
 #这里网上说可以使用,但是这里为什么不能使用呢??没搞懂~
 #但是可以直接使用下面的语句也可以达到相应的效果

> x[which.max(apply(x,1,sum))]
[1] 78
> x2[which.max(apply(x,1,sum))]
[1] 89
> x3[which.max(apply(x,1,sum))]
[1] 55

****************************************************************************************************************************************

             最快的脚步不是跨越,而是继续,最慢的步伐不是小步,而是徘徊。
 

****************************************************************************************************************************************

猜你喜欢

转载自blog.csdn.net/qq_42292831/article/details/83035159
今日推荐