-
nrow行数,ncol列数,矩阵填充是按照列的方式进行的,矩阵维度属性dim,矩阵属性查看用attributes函数
矩阵拼接:按行拼接rbind,按列拼接cbind
查看全部 -
向量,只能包含同一类型的对象,可以包含多个数据元素
注释的符号#,脚本文件中的命令需要点击Run才能运行,1:4中的冒号代表1到4,即1234
NA表示缺失值,强制转换(as.类型(参数))的后果可能会引入NA
查看全部 -
R的对象的属性
查看全部 -
最标准的赋值符号<-
R可以区分大小写,所以X和x是两个变量
字符串需要输入到“”里面,R中的真假需要用大写
查看全部 -
class 是一个查看对象类型的函数
查看全部 -
数据结构 对象的5种基本类型
查看全部 -
#还能进行统计
all(airquality$Month < 12)#返回的也是true或false
#更多例子
titanic <- as.data.frame(Titanic)#把Titanic函数强制转换成数字框形式,并传入"titanic".
#查询titanic中的信息
head(titanic)
tail(titanic)
dim(titanic)#查维度
summary(titanic)
xtabs(Freq ~ Class+Age,data=titanic)
x <- xtabs(Freq ~ Class+Age,data=titanic)#计算class和age两个条件的频率,数据来自titanic
ftable(x)
#查询数据大小
object.size(titanic)
print(object.size(titanic),units = "Kb")#把单位设置为kb。
查看全部 -
> head(airquality)#默认查取前六行的数据
Ozone Solar.R Wind Temp Month Day
1 41 190 7.4 67 5 1
2 36 118 8.0 72 5 2
3 12 149 12.6 74 5 3
4 18 313 11.5 62 5 4
5 NA NA 14.3 56 5 5
6 28 NA 14.9 66 5 6
> tail(airquality)#默认查询后六行的数据
Ozone Solar.R Wind Temp Month Day
148 14 20 16.6 63 9 25
149 30 193 6.9 70 9 26
150 NA 145 13.2 77 9 27
151 14 191 14.3 75 9 28
152 18 131 8.0 76 9 29
153 20 223 11.5 68 9 30
> head(airquality, 10)
Ozone Solar.R Wind Temp Month Day
1 41 190 7.4 67 5 1
2 36 118 8.0 72 5 2
3 12 149 12.6 74 5 3
4 18 313 11.5 62 5 4
5 NA NA 14.3 56 5 5
6 28 NA 14.9 66 5 6
7 23 299 8.6 65 5 7
8 19 99 13.8 59 5 8
9 8 19 20.1 61 5 9
10 NA 194 8.6 69 5 10
> summarize(airquality)
Error in summarize(airquality) : could not find function "summarize"
> summary(airquality)
Ozone Solar.R Wind Temp
Min. : 1.00 Min. : 7.0 Min. : 1.700 Min. :56.00
1st Qu.: 18.00 1st Qu.:115.8 1st Qu.: 7.400 1st Qu.:72.00
Median : 31.50 Median :205.0 Median : 9.700 Median :79.00
Mean : 42.13 Mean :185.9 Mean : 9.958 Mean :77.88
3rd Qu.: 63.25 3rd Qu.:258.8 3rd Qu.:11.500 3rd Qu.:85.00
Max. :168.00 Max. :334.0 Max. :20.700 Max. :97.00
NA's :37 NA's :7
Month Day
Min. :5.000 Min. : 1.0
1st Qu.:6.000 1st Qu.: 8.0
Median :7.000 Median :16.0
Mean :6.993 Mean :15.8
3rd Qu.:8.000 3rd Qu.:23.0
Max. :9.000 Max. :31.0
> str(airquality)
'data.frame': 153 obs. of 6 variables:
$ Ozone : int 41 36 12 18 NA 28 23 19 8 NA ...
$ Solar.R: int 190 118 149 313 NA NA 299 99 19 194 ...
$ Wind : num 7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ...
$ Temp : int 67 72 74 62 56 66 65 59 61 69 ...
$ Month : int 5 5 5 5 5 5 5 5 5 5 ...
$ Day : int 1 2 3 4 5 6 7 8 9 10 ...
> stable(airquality$Month)
Error in stable(airquality$Month) : could not find function "stable"
> table(airquality$Month)
5 6 7 8 9
31 30 31 31 30
> table(airquality$Ozone)
1 4 6 7 8 9 10 11 12 13 14 16 18 19 20 21 22 23 24
1 1 1 3 1 3 1 3 2 4 4 4 4 1 4 4 1 6 2
27 28 29 30 31 32 34 35 36 37 39 40 41 44 45 46 47 48 49
1 3 1 2 1 3 1 2 2 2 2 1 1 3 2 1 1 1 1
50 52 59 61 63 64 65 66 71 73 76 77 78 79 80 82 84 85 89
1 1 2 1 1 2 1 1 1 2 1 1 2 1 1 1 1 2 1
91 96 97 108 110 115 118 122 135 168
1 1 2 1 1 1 1 1 1 1
> table(airquality$Ozone, useNA = "ifany")
1 4 6 7 8 9 10 11 12 13 14 16 18 19 20
1 1 1 3 1 3 1 3 2 4 4 4 4 1 4
21 22 23 24 27 28 29 30 31 32 34 35 36 37 39
4 1 6 2 1 3 1 2 1 3 1 2 2 2 2
40 41 44 45 46 47 48 49 50 52 59 61 63 64 65
1 1 3 2 1 1 1 1 1 1 2 1 1 2 1
66 71 73 76 77 78 79 80 82 84 85 89 91 96 97
1 1 2 1 1 2 1 1 1 1 2 1 1 1 2
108 110 115 118 122 135 168 <NA>
1 1 1 1 1 1 1 37
> table(airquality$Ozone, useNA = "ifany")#可显示出NA值
1 4 6 7 8 9 10 11 12 13 14 16 18 19 20
1 1 1 3 1 3 1 3 2 4 4 4 4 1 4
21 22 23 24 27 28 29 30 31 32 34 35 36 37 39
4 1 6 2 1 3 1 2 1 3 1 2 2 2 2
40 41 44 45 46 47 48 49 50 52 59 61 63 64 65
1 1 3 2 1 1 1 1 1 1 2 1 1 2 1
66 71 73 76 77 78 79 80 82 84 85 89 91 96 97
1 1 2 1 1 2 1 1 1 1 2 1 1 1 2
108 110 115 118 122 135 168 <NA>
1 1 1 1 1 1 1 37
> table(airquality$Month,airquality$Day)#会查询得到一个二维的结果显示某月某天的数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
6 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
28 29 30 31
5 1 1 1 1
6 1 1 1 0
7 1 1 1 1
8 1 1 1 1
9 1 1 1 0
>
> any(is.na(airquality$Ozone)#查询臭氧记录中是否有缺失值,返回的是“TRUE、FALSE”
+ sum(is.na(airquality$Ozone)#查询臭氧记录中缺失值的个数是多少
Error: unexpected symbol in:
"any(is.na(airquality$Ozone)#查询臭氧记录中是否有缺失值,返回的是“TRUE、FALSE”
sum"
>
> #还能进行统计
> all(airquality$Month < 12)
[1] TRUE
> any(is.na(airquality$Ozone))#查询臭氧记录中是否有缺失值,返回的是“TRUE、FALSE”
[1] TRUE
> sum(is.na(airquality$Ozone))
[1] 37
查看全部 -
#summarize data
head(airquality)#默认查取前六行的数据
tail(airquality)#默认查询后六行的数据
head(airquality, 10)#可以通过后面设置参数查看前十行的数据,tail也是一样
summary(airquality)#会对airquality的所有基本信息进行总结汇总:中位数、max、min、mean、第25%分位点、第75%分位点、缺失值信息等。
str(airquality)#以一种简洁的方式对airquality进行了总结。
table(airquality$Month)#对airquality中的月份信息进行统计
table(airquality$Ozone)#不显示缺失值
table(airquality$Ozone, useNA = "ifany")#可显示出NA值
table(airquality$Month,airquality$Day)#会查询得到一个二维的结果显示某月某天的数据
any(is.na(airquality$Ozone))#查询臭氧记录中是否有缺失值,返回的是“TRUE、FALSE”
sum(is.na(airquality$Ozone))#查询臭氧记录中缺失值的个数是多少
#还能进行统计
all(airquality$Month < 12)#返回的也是true或false
查看全部 -
#lapply
str(lapply)#str()函数是使得任意的R函数以一种简介紧凑的形式显示出来
x <- list(a = 1:10,b = c(11,23,45,67,32,12))
lapply(x,mean)#求x列表中a和b元素的平均值
x1 <- 1:4
lapply(x1,runif)#runif函数作用是:从一个均匀分布的总体里抽取若干个数出来,默认从0-1之间抽取
lapply(x1,runif,min=0,max=100)#可以自助设置取值区间,虽然x1是向量,但是返回值默认是列表
x2 <-list(a = matrix(1:6,3,2), b =matrix(4:9,2,3))
lapply(x2,function(m) m[1,])#使用lapply函数时,参数格式一定要书写正确。本例抽取了列表中两个矩阵的第一行
#sapply,在lapply的结果能够简化的情况下对其进行简化,若不能简化则输出结果与lapply一样
x <- list(a = 1:10,b = c(11,23,45,67,32,12))
lapply(x,mean)
sapply(x,mean)
class(sapply(x,mean))#查看其类型属于数值型
#apply
y <-array(rnorm(2*3*4),c(2,3,4))
y
apply(y, c(1,2),mean)#对不同维度上的行和列求均值
apply(y, c(1,3),mean)#把不同列上的维度和列求均值
apply(y, c(2,3),mean)#把不同行上的列和维度求均值
#mapply
list(rep(1,4),rep(2,3),rep(3,2),rep(4,1))#与下面的函数运动结果一样
mapply(rep,1:4,4:1)#作用就是用rep函数,把1-4之间的数分别重复4-1遍
#写一个自己的函数:抽取正态分布中标准差(std)一定、均值(mean)一定的若干个数(n)的值
s <- function(n,mean,std){
rnorm(n,mean,std)
}#写完函数要先运行一下才能被调用
s(4,0,1)#抽取4个均值为0标准差为1的数
mapply(s,1:5,5:1,2)#传入s函数名,抽取1-5个值,均值分别为5-1,标准差为2
#tapply
x <-c(rnorm(5),runif(5),rnorm(5,1))#创建包含15个元素的向量,前五个是正态分布的5个,中间是均匀分布的5个元素,最后是标准差为1,标准差为0的正态分布
x
f <- gl(3,5)#gl函数后的参数说明:选取3个水平,每个水平下有5个元素
f
tapply(x, f, mean)#参数的含义就是:对x这个向量,按照f的水平进行分组,对每一组求均值
#split
split(x,f)#把x按照f水平进行划分
lapply(split(x,f),mean)#对划分后的数据求均值
head(airquality)
s <- split(airquality,airquality$Month)#查找airquality包中的月份数据,并传入s中
table(airquality$Month)#查找month的信息,以及每一月包含的记录数
lapply(s, function(x) colMeans(x[,c("Ozone","Wind","Temp")]))#计算x中Ozone、Wind、Temp三列的均值
sapply(s, function(x) colMeans(x[,c("Ozone","Wind","Temp")]))#sapply可以简化结果
#sapply虽然简化了结果,但是结果中包含缺失值,在Ozone中存在缺失值,所以运算时无法刨除,也就无法计算出正确的均值
#加上"na.rm = TRUE",就能解决存在缺失值的问题
sapply(s, function(x) colMeans(x[,c("Ozone","Wind","Temp")],na.rm = TRUE))
#排序
x1 <- data.frame(v1=1:5, v2 =c(10,5,2,8,63), v3=11:15, v4 =c(1,1,2,4,5))
x1
sort(x1$v2)#升序排列
sort(x1$v2, decreasing = TRUE)#降序排列
order(x1$v2)#返回的是第二列排序后的下标序号
x1[order(x1$v2),]#可以把所有数据按照第二列升序后的顺序进行相应的重新排列
x1[order(x1$v4,x1$v2),]#先按照v1进行排序(升序),遇到相同值时就用v2进行排序
x1[order(x1$v4,x1$v2,decreasing = TRUE),]#也可直接按降序排列
查看全部 -
> str(lapply)
function (X, FUN, ...)
> x <- list(a = 1:10,b = c(11,23,45,67,32,12))
> lapply(x,mean)
$`a`
[1] 5.5
$b
[1] 31.66667
> x1 <- 1:4
> lapply(x1,runif)
[[1]]
[1] 0.8868638
[[2]]
[1] 0.11008790 0.02666372
[[3]]
[1] 0.7966674 0.7209711 0.1867769
[[4]]
[1] 0.3799041 0.5063865 0.3081169 0.8336526
> lapply(x1,runif,min=0,max=100)
[[1]]
[1] 4.456663
[[2]]
[1] 34.33404 43.46529
[[3]]
[1] 66.93998 58.74472 79.33469
[[4]]
[1] 44.57984 79.15024 48.03468 88.60884
> x2 <-list(a = matrix(1:6,3,2), b =matrix(4:9,2,3))
> lapply(x2,function(m) m[1,])
$`a`
[1] 1 4
$b
[1] 4 6 8
> x <- list(a = 1:10,b = c(11,23,45,67,32,12))
> lapply(x,mean)
$`a`
[1] 5.5
$b
[1] 31.66667
> sapply(x,mean)
a b
5.50000 31.66667
> class(sapply(x,mean))
[1] "numeric"
> x <-array(rnorm(2*3*4),c(2,3,4))
> x
, , 1
[,1] [,2] [,3]
[1,] -2.4737530949 0.4171645 -1.0461752
[2,] -0.0001240402 -0.7896605 0.2961749
, , 2
[,1] [,2] [,3]
[1,] -0.3129235 2.9848179 -0.09541397
[2,] -0.2952547 0.3107933 1.35694007
, , 3
[,1] [,2] [,3]
[1,] -0.04722984 0.1340425 -0.5091902
[2,] -0.59321372 -0.1358251 0.2591943
, , 4
[,1] [,2] [,3]
[1,] 1.8403115 -1.5341308 -0.6485949
[2,] -0.0483033 -0.2849255 0.7454548
> y <-array(rnorm(2*3*4),c(2,3,4))
> y
, , 1
[,1] [,2] [,3]
[1,] -0.3573472 -1.3076321 1.4378976
[2,] 0.7947117 0.1829961 0.7720183
, , 2
[,1] [,2] [,3]
[1,] -0.06392413 -0.8112794 -0.5554383
[2,] 0.75611728 -0.1259885 0.9862515
, , 3
[,1] [,2] [,3]
[1,] 1.1408303 1.5646228 -1.2259067
[2,] -0.4162167 0.2803539 0.9684884
, , 4
[,1] [,2] [,3]
[1,] -0.8962086 -1.4802795 0.3094928
[2,] -0.5749213 -0.4892932 -0.5233857
> apply(y, c(1,2),mean)
[,1] [,2] [,3]
[1,] -0.04416243 -0.50864205 -0.008488657
[2,] 0.13992275 -0.03798291 0.550843091
> apply(y, c(1,3),mean)
[,1] [,2] [,3] [,4]
[1,] -0.07569391 -0.4768806 0.4931821 -0.6889984
[2,] 0.58324204 0.5387934 0.2775419 -0.5292001
> apply(y, c(2,3),mean)
[,1] [,2] [,3] [,4]
[1,] 0.2186823 0.3460966 0.3623068 -0.7355650
[2,] -0.5623180 -0.4686339 0.9224883 -0.9847863
[3,] 1.1049579 0.2154066 -0.1287092 -0.1069465
> list(rep(1,4),rep(2,3),rep(3,2),rep(4,1))
[[1]]
[1] 1 1 1 1
[[2]]
[1] 2 2 2
[[3]]
[1] 3 3
[[4]]
[1] 4
> mapply(rep,1:4,4:1)
[[1]]
[1] 1 1 1 1
[[2]]
[1] 2 2 2
[[3]]
[1] 3 3
[[4]]
[1] 4
> s <- function(n,mean,std){
+ rnorm(n,mean,std)
+ }
> s(4,0,1)#抽取4个均值为0标准差为1的数
[1] -0.2924530 -1.3309042 0.8299158 -1.4291025
> mapply(s,1:5,5:1,2)
[[1]]
[1] 3.907964
[[2]]
[1] 3.6132156 0.4039049
[[3]]
[1] 4.6735051 0.2037741 1.3328692
[[4]]
[1] 3.75000085 -0.06562299 0.57787271 1.62600421
[[5]]
[1] 0.5588209 -0.4725886 3.6368032 1.0203294 -3.1208185
> x <-c(rnorm(5),runif(5),rnorm(5,1))#创建包含15个元素的向量,前五个是正态分布的5个,中间是均匀分布的5个元素,最后是标准差为1,标准差为0的正态分布
>
> x
[1] -0.37771653 -0.08087372 -0.35404229 -0.75805485 1.09533919 0.54208869
[7] 0.54051547 0.38912002 0.12224007 0.28072261 1.25432798 0.83136329
[13] 0.72196141 1.34407258 2.80813618
> f <- gl(3,5)#gl函数后的参数说明:选取3个水平,每个水平下有5个元素
> f
[1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
Levels: 1 2 3
> split(x,f)
$`1`
[1] -0.37771653 -0.08087372 -0.35404229 -0.75805485 1.09533919
$`2`
[1] 0.5420887 0.5405155 0.3891200 0.1222401 0.2807226
$`3`
[1] 1.2543280 0.8313633 0.7219614 1.3440726 2.8081362
> lapply(split(x,f),mean)
$`1`
[1] -0.09506964
$`2`
[1] 0.3749374
$`3`
[1] 1.391972
> s <- split(airquality,airquality$Month)
> lapply(s,function(x),colMeans(x,[,c("Ozone","Wind","Temp")]))
Error: unexpected ',' in "lapply(s,function(x),"
> head(airquality)
Ozone Solar.R Wind Temp Month Day
1 41 190 7.4 67 5 1
2 36 118 8.0 72 5 2
3 12 149 12.6 74 5 3
4 18 313 11.5 62 5 4
5 NA NA 14.3 56 5 5
6 28 NA 14.9 66 5 6
> s <- split(airquality,airquality$Month)#查找airquality包中的月份数据,并传入s中
> table(airquality$Month)#查找month的信息,以及每一月包含的记录数
5 6 7 8 9
31 30 31 31 30
> lapply(s,function(x),colMeans(x,[,c("Ozone","Wind","Temp")]))
Error: unexpected ',' in "lapply(s,function(x),"
> lapply(s, function(x) colMeans(x,[,c("Ozone","Wind","Temp")]))
Error: unexpected '[' in "lapply(s, function(x) colMeans(x,["
> lapply(s, function(x) colMeans(x[,c("Ozone","Wind","Temp")]))
$`5`
Ozone Wind Temp
NA 11.62258 65.54839
$`6`
Ozone Wind Temp
NA 10.26667 79.10000
$`7`
Ozone Wind Temp
NA 8.941935 83.903226
$`8`
Ozone Wind Temp
NA 8.793548 83.967742
$`9`
Ozone Wind Temp
NA 10.18 76.90
> slapply(s, function(x) colMeans(x[,c("Ozone","Wind","Temp")]))
Error in slapply(s, function(x) colMeans(x[, c("Ozone", "Wind", "Temp")])) :
could not find function "slapply"
> sapply(s, function(x) colMeans(x[,c("Ozone","Wind","Temp")]))
5 6 7 8 9
Ozone NA NA NA NA NA
Wind 11.62258 10.26667 8.941935 8.793548 10.18
Temp 65.54839 79.10000 83.903226 83.967742 76.90
> sapply(s, function(x) colMeans(x[,c("Ozone","Wind","Temp")],na.rm = TRUE))
5 6 7 8 9
Ozone 23.61538 29.44444 59.115385 59.961538 31.44828
Wind 11.62258 10.26667 8.941935 8.793548 10.18000
Temp 65.54839 79.10000 83.903226 83.967742 76.90000
> x1 <- data.frame(v1=1:5, v2 =c(10,5,2,8,63), v3=11:15, v4 =c(1,1,2,4,5))
> x1
v1 v2 v3 v4
1 1 10 11 1
2 2 5 12 1
3 3 2 13 2
4 4 8 14 4
5 5 63 15 5
> sort(x1$v2)
[1] 2 5 8 10 63
> sort(x1$v2, decreasing = TRUE)
[1] 63 10 8 5 2
> order(x1$v2)#返回的是第二列排序后的下标序号
[1] 3 2 4 1 5
> x[order(x1$v2)]
[1] -0.35404229 -0.08087372 -0.75805485 -0.37771653 1.09533919
> x[order(x1$v2),]
Error in x[order(x1$v2), ] : incorrect number of dimensions
> order(x1$v2)
[1] 3 2 4 1 5
> x[order(x1$v2),]
Error in x[order(x1$v2), ] : incorrect number of dimensions
> x1[order(x1$v2),]
v1 v2 v3 v4
3 3 2 13 2
2 2 5 12 1
4 4 8 14 4
1 1 10 11 1
5 5 63 15 5
>
查看全部 -
缺失值处理 - 判断缺失值:is.na(x) - 取出向量中非缺失值元素:y[!is.na(x)] - 取出多个向量中的缺失值:z <- complete.cases(x,y) x[z] ; y[z] - 利用数据集实践 library(datasets) - 包含airquality集
library(datasets) #得到R的数据集 head(数据集名称) #返回数据集前六列的数据 可通过g <- complete.cases(数据集名称)返回所有的结果
右下键的packages栏可以查看当前加载的包的情况;
查看全部 -
x[which(x$v1>2), ]输出结果与x[x$v1>2, ]相同;
x$v1>2返回的是逻辑型,而which(x$v1>2)返回的是逻辑值为真的那些列的下标;
subset(x, 用于构建子集的条件)来构造子集;
查看全部 -
> x <- c(1,3,4,NA,NA)
> is.na(x)
[1] FALSE FALSE FALSE TRUE TRUE
> is.nan(x)
[1] FALSE FALSE FALSE FALSE FALSE
利用is.nan函数检测不出来NA缺省值,但是可以用NA检测出NAN缺省值
查看全部 -
缺失值NA/NaN,注意大小写;
NaN属于NA,NA不属于NaN;
NaN一般表示数字的缺失值;
NA有类型属性;
用is.na()/is.nan()来考察向量中是否有缺失值;
查看全部
举报