1. 求解线性方程组
> a<-matrix(c(3,1,5,2),2,2)
> b<-matrix(c(4,1),2,1)
> x<-solve(a,b)
> x
[,1]
[1,] 3
[2,] -1
2. 数据框
> city<-c('a','b','c','d')
> age<-c(27,29,31,16)
> data<-data.frame(city, age)
> class(city)
[1] "character"
> class(data$city) #character自动转换为factor
[1] "factor"
> data2<-data.frame(city,age,stringsAsFactors = F) #不自动转,设置为FALSE
> class(data2$city)
[1] "character"
> dim(data)
[1] 4 2
# 获取数据框 x 的行数或列数 nrow(data), ncol(data)
> head(data)
city age
1 a 27
2 b 29
3 c 31
4 d 16
> summary(data)
city age
a:1 Min. :16.00
b:1 1st Qu.:24.25
c:1 Median :28.00
d:1 Mean :25.75
3rd Qu.:29.50
Max. :31.00
> str(data)
'data.frame': 4 obs. of 2 variables:
$ city: Factor w/ 4 levels "a","b","c","d": 1 2 3 4
$ age : num 27 29 31 16
# dim得到维度,head得到前六行数据;
# summary函数负责对每列进行统计,而str则返回整个数据的结构。
3. 排序
> order(data$age) #最小数的位置
[1] 4 1 2 3
> data[order(data$age),] #默认升序排序
city age
4 d 16
1 a 27
2 b 29
3 c 31
> data[order(data$age,decreasing = T),] #降序排序
city age
3 c 31
2 b 29
1 a 27
4 d 16
4. 缺失值与空值
> temp<-c(25,36,14,12,NA) #NA一定要大写
> temp
[1] 25 36 14 12 NA
> mean(temp)
[1] NA
> mean(temp,na.rm = T) #移除缺失值
[1] 21.75
> is.na(temp) #判断是否为缺失值
[1] FALSE FALSE FALSE FALSE TRUE
缺失值的意义是应该有数据而没有,起到一个占位符的作用。
空值的意义则是没有,空值的表示是NULL。
下面的例子中temp仍然只有四个元素
> temp<-c(25,36,14,12,NULL)
> temp
[1] 25 36 14 12
# NULL有时候可以用来方便的删除复杂对象中的一个元素。例如上面的例子中,
> data$age<-NULL
> data
city
1 a
2 b
3 c
4 d
5.公式
形式均是类似y~x的这种写法。波浪号左侧为因变量,波浪号右侧为自变量。
如果数据中变量较少我们可以直接手工输入,但如果遇到几十个变量,我们可以编程生成公式。
下面的例子就是生成有20个自变量的公式。
n<-1:20
> xvar<-paste0('x',n) #x与n连接没有空格,使用引号
> xvar
[1] "x1" "x2" "x3" "x4" "x5" "x6" "x7" "x8"
[9] "x9" "x10" "x11" "x12" "x13" "x14" "x15" "x16"
[17] "x17" "x18" "x19" "x20"
> right<-paste(xvar,collapse = '+') #使用‘+’号连接
> right
[1] "x1+x2+x3+x4+x5+x6+x7+x8+x9+x10+x11+x12+x13+x14+x15+x16+x17+x18+x19+x20"
> left<-'y~'
> my_formula<-paste(left,right)
> my_formula
[1] "y~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11 + x12 + x13 + x14 + x15 + x16 + x17 + x18 + x19 + x20
> my_formula<-as.formula(my_formula)
> class(my_formula)
[1] "formula"
> xvar2<-paste('x',n) #x与n 连接有空格
> xvar2
[1] "x 1" "x 2" "x 3" "x 4" "x 5" "x 6" "x 7"
[8] "x 8" "x 9" "x 10" "x 11" "x 12" "x 13" "x 14"
[15] "x 15" "x 16" "x 17" "x 18" "x 19" "x 20"
# 补充:
> paste('a',1:6,sep = '=',collapse = ',')
[1] "a=1,a=2,a=3,a=4,a=5,a=6" #1个元素
> paste('a',1:6,sep = '=')
[1] "a=1" "a=2" "a=3" "a=4" "a=5" "a=6" #6个元素