欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

R数据分析-1

程序员文章站 2022-07-14 21:43:24
...

getwd()#显示当前工作目录
setwd () #修改当前工作目录
.libPaths()#查看该文件夹在计算机中的具体路径
install.packages(“stringr”) #安装包stringr
library(“stringr”)#载入包stringr
search() #显示已加载的包的列表
detach(“package:stringr”) #移除包stringr
remove.package(“package:stringr”) #卸载包stringr

R数据分析-1
尝试的部分运行


```r
getwd()
.libPaths()
install.packages("stringr")
library("stringr")
str_length("Hello R!")
search() 
detach("package:stringr")    #移除包
remove.package("package:stringr")   #卸载包




#基本数据类型
num <-100;num
is.integer(num)#?
is.double(num)#?
typeof(num)
num2 <- 100L
typeof(num2)

is.logical(TRUE)
is.logical(T)
is.logical(5)#?
is.logical(0)#?

is.character("R program" )


#数据类型转换
logi_vec <- T
typeof(logi_vec)
int_vec <- c(100L, 200L)
typeof(int_vec)




#运算过程中,数据类型自动转换
2*T
10 + FALSE
exp(F)
10 & 0
10 | 0


#强制转换数据类型
as.logical(-10)
as.logical("T")
as.logical("F")
as.character(c(T,F,TRUE,FALSE))
as.character(10.99)





#特殊值
#NA,not available,表示缺失值
a <- 100
a[1] #?
a[2] #?
num_vec <- c(1,2)
length(num_vec) <- 4
num_vec
#Inf 无穷大
10/0
-10/0
#NaN, not a number,无意义的值
0/0
Inf -Inf
#NULL,表示空数据
num_vec1 <- c(1,5,NaN)
length(num_vec1)
num_vec2 <- c(1,5,NULL)
length(num_vec2)

#运算符
#逻辑运算符 & vs &&
logi_vec1 <- c(T,F,T)
logi_vec2 <- c(F,T,T)
logi_vec1 & logi_vec1 # ?
logi_vec1 && logi_vec2 # ?

logi_vec1 <- c(T,F,T) # 向量长度不同,短的循环补齐
logi_vec2 <- c(T,T,T,F)
logi_vec1 & logi_vec2 #?
logi_vec1 && logi_vec2 #?

logi_vec1 <- c(T,F,T)#验证:向量长度不同,短的循环补齐,长度为整数倍
logi_vec2 <- c(F,T,T,T,T,T)
logi_vec1 & logi_vec2 #?
logi_vec1 <- c(T,F,T,T,F,T) #验证:等价代码
logi_vec2 <- c(F,T,T,T,T,T)
logi_vec1 & logi_vec2 #?

#逻辑运算 | vs ||
logi_vec1 <- c(T,F,T)
logi_vec2 <- c(F,T,T)
logi_vec1 | logi_vec2
logi_vec1 || logi_vec2

#向量
vec <- c(2,3,4)

#访问元素
vec[1]
vec[0]
vec[2:3]
vec[2:5]
vec[c(1,3)] #访问不连续的怎么办?
vec[c(1,3,3)] #想重复访问
#添加元素
vec
vec <- c(vec[1:2],10,vec[3])
vec
#删除元素
vec
vec <- vec[-3]
vec

#获取向量长度
vec <- letters
vec
length(vec)
vec[-length(vec)]#删除x,y,z 怎么做?
vec[-length(vec):-length(vec)+2]
-length(vec):-length(vec)+2#注意加括号
-length(vec):(-length(vec)+2)
vec[-length(vec):(-length(vec)+2)]

#创建向量,
#Q:创建向量的方法
1:5
1:-5

#1,3,5,7,9, 创建等差数列
?seq
example(seq)
seq(1,9,by =2)

#将某向量重复多次,创建向量
vec <- 1:3
#1 2 3 1 2 3 1 2 3
?rep
example(rep)
rep(vec, 3)
#1 1 1 2 2 2 3 3 3
rep(vec, each = 3)

#创建长度为0的向量
new.vec <- c()
length(new.vec)
new.vec

install.packages("sample")
library("sample")
#判断某班级学生的年龄是不是都在18岁以上
stu <- sample(1:19,19, replace = F)
stu
stu >= 18
all(stu <=20)
stu <- sample(c(18,19),10,replace = T)
stu
all(stu >= 18)

#判断班级的学生的年龄是否都在18岁以下
stu <- sample(c(17,18,19),10,replace = T)
stu
any(stu<18)
stu <- sample(c(18,19),10,replace = T)
stu
any(stu<18)

#向量运算,算术运算,关系运算,逻辑运算
vec1 <- c(1,2)
vec2 <- c(10,20)
vec1 * vec2
vec1 == vec2
vec1 | vec2

#向量运算-循环补齐
vec1 <- c(1,2)
vec2 <- c(10,20,30)
vec1 + vec2
vec2 <- c(10,20,30,40)
vec1 + vec2

#向量元素筛选,找出向量中的偶数
vec <- 1:10
new.vec <- vec[vec%%2 == 0]
new.vec
vec%%2 == 0
vec[c(F,T,F,T,F,T,F,T,F,T)]#通过逻辑性向量筛选向量元素

vec < c(1:5,NA)
vec[vec%%2 == 0]
subset(vec, vec%%2 == 0)#希望结果中不要出现NA

#找出向量中的偶数下标
vec <- 5:8
which(vec %% 2 == 0)[1]
which(vec == 100)[1]

#寻找水仙花数
nums <- 100:999
first.num <- nums%/%100
second.num <- (nums%%100)%/%10
third.num <- nums%%10
nums[(first.num^3 + second.num^3 + third.num^3) == nums]

#矩阵
#矩阵创建
m <-matrix(1:8, nrow = 2)
#Q:按行创建矩阵
m <- matrix(1:8, nrow = 2, byrow = T)
m
matrix(c(1,5,2,6,3,7,4,8), nrow = 2)#byrow参数改变了数据

#矩阵运算
m1 <- matrix(1:4, nrow = 2)
m2 <- matrix(2:5, nrow = 2)
m1;m2
m1 + m2
m1 * m2
#矩阵运算,可以用循环补齐吗
m1 <- matrix(1:4, nrow = 2)
m2 <- matrix(2:7, nrow = 2)
m1;m2
m1 + m2
m1 <- matrix(1:4, nrow = 2)
m2 <- matrix(2:3, nrow = 1)
m1;m2
m1 + m2

#矩阵索引
m <- matrix(1:12, nrow = 4)
m
m[,2:3]
m[1:3,]#一定记得逗号
m[1:3]
m[1:5]

#访问矩阵的某行
m
m[1,]

#访问矩阵的某列
m
m[,2]
m[,1<=2]

#矩阵元素按条件筛选
m <- matrix(1:12, nrow = 4)
m
first.col <- m[,1]
first.col
first.col %% 2 == 0
m[first.col %% 2 == 0,]
m[first.col %% 2 == 0 & m[,2] > 6,]