基本数据处理
- 缺失数据
is.na() # 判断数据是否存在NA
x = c(1, 2, 4, NA)
is.na(x) # out :F F F T
x[!is.na(x)] # 输出非NA的项
sum(is.na(x)) # 是NA元素的个数
x[is.na(x)] = mean(x[!is.na(x)]) #把NA值赋值成有值的平均值
- 处理重复数据
Dragon[7:19,] = Dragon[2,] # 制造重复数据,把7:19行的数据变成与2行相同
duplicated(Dragon) # 每一行与前面行相比较有相同的就为TRUE,
sum(duplicated(Dragon)) # 计算相同行的个数
Dragon[!duplicated(Dragon),] # 显示没有重复的Dragon数据
unique(Dragon) # 与上一行代码作用相同
创建序列
1:5 # 12345
5:1 # 54321
seq(from=0,to=20,by=5) # 0 5 10 15 20
a = rep(0, 3) #a: 0 0 0
rep(c(1, 2, a), 2) # 1200012000
随机采样
- 不放回采样
sample(1:300,10) # 生成10 个在1-300中的不重复随机数
sum(duplicated(sample(1:300,100))) # 0 说明不重复,且生成个数不能超过300
- 有放回采样
sample(1:300,10,replace=T) # 生成10个1-300中的可重复随机数
sum(duplicated(sample(1:300,100,replace=T))) # 结果不为0,说明可重复,生成个数可超过300
基本计算
- 加减乘除+ - * /
- 余数:%% 整数商: %/% 幂运算:^ 矩阵相乘:%*%
- log(x, base) , sqrt, abs, exp(), sin(x), cos(x)
数据类型
- typeof()
- mode()
-
class()
image.png
数据类型转换
as.character()
c=as.character(c(1,2,3)) # "1" "2" "3"
as.numeric()
n=as.numeric(c("1","2","3")) # 1 2 3
as.data.frame()
df=as.data.frame(c(1,2,3))
as.matrix()
m=as.matrix(c(1,2,3))
数据合并
cbind 列向合并
rbind 行向合并
a=matrix(0,2,2)
a
b=matrix(1,2,2)
b
cbind(a,b)
rbind(a,b)

查看数据维度
- length
- dim
- ncol, nrow
a=c(1:5)
a
length(a) # 5
b = matrix(1, 2, 3)
b
dim(b) # 2 3
length(b) # 6
ncol(b) # 3
nrow(b) # 2

apply函数
对一个数组按维度计算
apply(X, MARGIN, FUNCTION, ...)
- x 数据
- MARGIN 维度选择 =1 行计算 =2 列计算(与python axis不相同)
- FUNCTION:执行计算操作的函数
m = matrix(c(1:10, 11:20), nrow = 10, ncol = 2)
m
apply(m, 1, mean)
apply(m, 2, mean)

字符串操作
- 字符串连接paste()
- 字符串分割strsplit()
- 字符串个数统计nchar()
- 字符串截取 substr(x, start, stop)
paste("2017","Dragon","Star",sep=" ") #sep是连接要插入的字符
strsplit("2017 Dragon Star",split=" ") #空格作为分割
nchar("2017 Dragon Star") # 16
substr("2017 Dragon Star",6,11) # Dragon
字符串替换和大小写转换
- chartr(old,new, x) 替换字符含有old的字符换成new的(等字符数替换)
- gsub(old,new, x) 不等字符数替换
- tolower(x) 全变小写
- toupper(x) 全变大写
- casefold(x,upper = F/T) upper=F全变小写,等于T 全变大写
chartr("2017","2018", "2017 Dragon Star") # 2018 Dragon Star
gsub ("2017","18", "2017 Dragon Star") # 18 Dragon Star
tolower("2018 Dragon Star") # "2018 dragon star"
toupper("2018 Dragon Star") # "2018 DRAGON STAR"
casefold("2018 Dragon Star",upper = F) # "2018 dragon star
casefold("2018 Dragon Star",upper = T) # "2018 DRAGON STAR"
pattern识别
runif(x, min, max) 生成x个[min, max]均匀分布的随机数
which(x) x代表逻辑操作,返回这个操作为真的元素索引
x= floor(10*runif(10))
x
which(x<5)
x[which(x<5)]

流程控制语句
- if语句
> score = 95
> if(score< 60)
+ {print("不合格")
+ }else if(score< 80)
+ {print("考试中等")
+ } else if(score<90)
+ {print("考试良好")
+ }else print("考试优秀")
[1] "考试优秀"
- for语句
> for(i in 1:5){
+ print("hello world")
+ print(i)
+ }
> a = c(2:10)
> for (i in c(3, 8, 9, 3)){
+ print(a[i])
+ }
- while语句
> a = 1
> while(a <= 5){
+ print(paste("Dsay", a, sep=""))
+ a= a+1
+ }
统计基本函数
-
min(x) max(x)
-
range() #数据范围
-
which.min(x), which.max(x) #最小值/最大值对应索引
-
mean(x) #平均数
-
sd() # 标准差
-
var() # 方差
-
cor(x, y) # 相关性 皮尔森相关系数
image.png
-
cov(x, y) # 协方差
数据规范化
- rnorm # 产生一系列的正态分布随机数
x = rnorm(2000)
hist(x)
mean(x)
sd(x)

- scale() # 数据标准化的两种方法
scale(x,center=T,scale=F)等价于x-mean(x) #中心化
scale(x,center=T,scale=T)等价于(x-mean(x))/sd(x) # 标准化
y=scale(x,T,F)
mean(y)
sd(y)
z=scale(x,T,T)
mean(z)
sd(z)

网友评论