R语言数据分析(1)——R语言数据结构

R语言 Haran 7年前 (2017-11-16) 4091次浏览 0个评论

最近在复习R,买了两本书,参加一个在线课程,打算系统的过一遍,这一节关注R的数据结构,R中的数据结构主要有向量,矩阵,数组,数据框和列表。

向量

向量是R中最简单的数据结构了,有数值型,字符型,逻辑型和负数型。可以进行四则运算,函数运算,逻辑运算和切片操作,其中切片操作是最重要的,也是其他几种数据结构进行数据处理时常用的。

矩阵

矩阵是R中最常用到的数据结构之一,因为R是出生于学术界,学术界的很多运算都是矩阵这种便捷的形式的,矩阵有很多的运算:
t(A) 转置
det(A) 行列式
A%*%B,crossprod 内积
A%o%B,outer 外积
A*B 乘法
diag(A) 取矩阵对角线元素
solve(A) 求逆
eigen(A) 特征值和特征向量
svd(A)奇异值分解

数组

数据只R中的重要结构之一,矩阵可以看做是二维数组,数据里面的数据都是同一种类型的。

数据框

数据框是R中最重要的数据结构之一,可以说矩阵和数据框是R里面最重要的数据结构了。如果你的一个数据里面既有数值型,又有字符型,这时候数组就不适合了,需要采用数据框的形式,数据框的数据长度一般是相等。

列表

对于不规则的数据,就需要用列表处理,列表既可以多种类型的不规则数据。可以这样说,数据框是规则的列表。

下面做《统计建模与R语言》第二章的课后练习。

R语言数据分析(1)——R语言数据结构

> A<-matrix(1:20,nrow=4) 
> A
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    5    9   13   17
[2,]    2    6   10   14   18
[3,]    3    7   11   15   19
[4,]    4    8   12   16   20
> B<-matrix(1:20,nrow=4,byrow=T) 
> B
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    2    3    4    5
[2,]    6    7    8    9   10
[3,]   11   12   13   14   15
[4,]   16   17   18   19   20
> C=A+B
> C
     [,1] [,2] [,3] [,4] [,5]
[1,]    2    7   12   17   22
[2,]    8   13   18   23   28
[3,]   14   19   24   29   34
[4,]   20   25   30   35   40
> E=A*B (这里是错的,根据后面的计算算理,是两个向量对应位置相乘,这里两个向量都
是n*m的,相乘的结果不可能是n*n)
> E
     [,1] [,2] [,3] [,4] [,5]
[1,]    1   10   27   52   85
[2,]   12   42   80  126  180
[3,]   33   84  143  210  285
[4,]   64  136  216  304  400
> F=A[1:3,1:3]
> F
     [,1] [,2] [,3]
[1,]    1    5    9
[2,]    2    6   10
[3,]    3    7   11
> G=B[,-c(3)]
> G
     [,1] [,2] [,3] [,4]
[1,]    1    2    4    5
[2,]    6    7    9   10
[3,]   11   12   14   15
[4,]   16   17   19   20

R语言数据分析(1)——R语言数据结构

> x<-rep(1:4,times=c(5,3,4,2)) 
> x
 [1] 1 1 1 1 1 2 2 2 3 3 3 3 4 4

R语言数据分析(1)——R语言数据结构

> H<-matrix(nrow=5,ncol=5) 
> for (j in 1:5){ 
+   for(i in 1:5)
+     {H[i,j]=1/(i+j-1)}}
> H
          [,1]      [,2]      [,3]      [,4]      [,5]
[1,] 1.0000000 0.5000000 0.3333333 0.2500000 0.2000000
[2,] 0.5000000 0.3333333 0.2500000 0.2000000 0.1666667
[3,] 0.3333333 0.2500000 0.2000000 0.1666667 0.1428571
[4,] 0.2500000 0.2000000 0.1666667 0.1428571 0.1250000
[5,] 0.2000000 0.1666667 0.1428571 0.1250000 0.1111111
> det(H)
[1] 3.749295e-12
> t(H)
          [,1]      [,2]      [,3]      [,4]      [,5]
[1,] 1.0000000 0.5000000 0.3333333 0.2500000 0.2000000
[2,] 0.5000000 0.3333333 0.2500000 0.2000000 0.1666667
[3,] 0.3333333 0.2500000 0.2000000 0.1666667 0.1428571
[4,] 0.2500000 0.2000000 0.1666667 0.1428571 0.1250000
[5,] 0.2000000 0.1666667 0.1428571 0.1250000 0.1111111
> eigen(H)
$values
[1] 1.567051e+00 2.085342e-01 1.140749e-02 3.058980e-04 3.287929e-06

$vectors
           [,1]       [,2]       [,3]        [,4]         [,5]
[1,] -0.7678547  0.6018715 -0.2142136  0.04716181  0.006173863
[2,] -0.4457911 -0.2759134  0.7241021 -0.43266733 -0.116692747
[3,] -0.3215783 -0.4248766  0.1204533  0.66735044  0.506163658
[4,] -0.2534389 -0.4439030 -0.3095740  0.23302452 -0.767191193
[5,] -0.2098226 -0.4290134 -0.5651934 -0.55759995  0.376245545


R语言数据分析(1)——R语言数据结构

> data2.5<-data.frame( 
+ Name=c("张三", "李四", "王五", "赵六", "丁一"), 
+ Sex=c("女", "男", "女", "男", "女"), 
+ Age=c(14, 15, 16, 14, 15), 
+ Height=c(156, 165, 157, 162, 159),
+ Weight=c(42.0, 49.0, 41.5, 52.0, 45.5) + ) 
> data2.5
  Name Sex Age Height Weight
1 张三  女  14    156   42.0
2 李四  男  15    165   49.0
3 王五  女  16    157   41.5
4 赵六  男  14    162   52.0
5 丁一  女  15    159   45.5

R语言数据分析(1)——R语言数据结构

> data2.5
  Name Sex Age Height Weight
1 张三  女  14    156   42.0
2 李四  男  15    165   49.0
3 王五  女  16    157   41.5
4 赵六  男  14    162   52.0
5 丁一  女  15    159   45.5
> write.table(data2.5,file="C:\\Users\\Administrator\\Desktop\\data26.txt")
> fd<-read.table(file="C:\\Users\\Administrator\\Desktop\\data26.txt",header = T) 
> write.csv(fd,file="C:\\Users\\Administrator\\Desktop\\data26.csv")

R语言数据分析(1)——R语言数据结构


如有疑问,可以在文章底部留言或邮件(haran.huang@ichdata.com) 我~
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址