R语言基础第二部分学习,主要是
1.reshape2包对数据整合,主要进行融合(melt)重塑(dcast)过程,这个过程也可以使用dplyr实现(没记错的话)。
reshape2
library(reshape2) #加载reshape2包
x <- data.frame(k1=c(NA,NA,3,4,5),k2=c(1,NA,NA,4,5),
data=1:5)
y <- data.frame(k1=c(NA,2,NA,4,5),k2=c(NA,NA,3,4,5),
data=1:5)
x
y
?merge
args(merge) #查看函数的参数
merge(x,y,by="k1")
merge(x,y,by=c("k1","k2"))
help(package="reshape2")
melt() #融数据 输入 object 对象, 数据框,矩阵,数组,列表
airquality #纽约的空气质量数据框 data.frame
class(airquality)
names(airquality)
names(airquality)<-tolower(names(airquality)) #列名转换为小写
air<- melt(airquality) #数据融合,每一行都是标识符与变量的组合,然后用dcast函数重铸数据
head(air,50)
class(air) #data.frame
class(air$variable) #"factor"
head(airquality)
air<- melt(airquality, id=c("month", "day"))
# ~ 符号表示相关联,说明二者有联系
aqw <- dcast(air,month+day~variable)
aqw <- dcast(air,month~variable,fun.aggregate = mean,na.rm=T)
tidyr
chooseCRANmirror()
library(tidyr)
install.packages("tidyr")
help(package="tidyr")
mtcars
tdata <- mtcars[1:10,1:3]
qdata <- data.frame(names=rownames(tdata),tdata) ##将names和tdata合并
qdata<- gather(tdata,key="key",value = "value",cyl,disp,mpg) #类似于reshape2的melt函数
spread(qdata,key="key",value = "value")
df <- data.frame(x=c(NA,"a.b-c","a-d","b-c"))
df
?separate #分割字符串列到多列
x<- separate(df,col = x,into = c("c","d"),sep = "-") #col 分割列, into 分割之后的列名,字符串向量 sep 连字符设定
##多列合并为一列通过连接字符串在一块的方式
unite(x,col = "cd",c,d,sep = "-")
2.这部分也是对数据进行清洗整理,操作中间可以用管道符号%>%(快捷键 ctrl+shift+M)传递参数(类似于attach函数),mutate函数增加或者修改列,rename函数对列名进行重命名,filter以及select函数分别按照某种条件(逻辑型、数值、字符串都可以)对列与行进行选择。slice函数,按照位置信息去除任意一行。arrange函数对数据进行重排。
****join 取交集、并集、补集等
dplyr
library(dplyr)
ls("package:dplyr") #查看包中的函数
??dplyr
?slice
dplyr::filter(iris,Sepal.Length>7) #按照条件筛选符合的列
dplyr::distinct(rbind(iris[1:10,],iris[1:15,])) #去重复,类似unique
dplyr::slice(iris,2) #取出第二行
#切片,按照位置信息取出数据的任何一行,挑选,去除,复制任意一行,输入为数据框
iris[2,]
mtcars %>% slice(1L)
dplyr::sample_n(iris,10) #随机抽取10行
dplyr::arrange(iris,desc(Sepal.Length)) ##排序,desc函数,降序排序
dplyr::arrange(iris,-Sepal.Length) #负号等同于 desc函数
dplyr::select() #取子集
?select
summarise(iris,avg=mean(Sepal.Length)) #计算Sepal.Length的平均值,并命名为avg
?summarise
### 链式操作符 %>% 快捷键 ctrl+shift+M
dplyr::group_by(iris,Species) #利用group_by 函数对iris根据Species列进行分组
iris %>% group_by(Species) %>% summarise() #分组并进行统计
iris %>% group_by(Species) %>% summarise(avg=mean(Sepal.Width)) %>% arrange(avg) #分组,求平均值,排序
dplyr::mutate(iris,new=Sepal.Length+Petal.Length) #增加或修改某一列
###connecte
a <- data.frame(x1=c("A","B","C"),x2=c(1,2,3))
b <- data.frame(x1=c("A","B","D"),x3=c(T,F,T))
dplyr::left_join(a,b,by="x1")
dplyr::right_join(a,b,by="x1")
dplyr::full_join(a,b,by="x1")
dplyr::semi_join(a,b,by="x1") #根据右侧表的内容,对左侧表进行过滤
dplyr::anti_join(a,b,by="x1") #将a相对于b的补集输出。
first <- slice(mtcars,1:20)
setdiff() ##取补集
q()
lm 用于线性拟合, 参数格式 因变量~自变量+自变量+互作变量,用summary函数查看结果
R函数
head(state.x77)
class(state.x77) #"matrix" "array"
colnames(state.x77)
state <- as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])
fit <- lm(Murder~Population+Illiteracy+Income+Frost,data = state)
?lm
summary(fit)
class(fit)
ls()
rm(fit)
##要清楚返回值得类型
plot(a) #返回图形
###清楚数据的输入数据格式
# 输入数据类型
# 向量 sum mean sd range median sort order
# 矩阵或者数据框 cbind rbind
# 数字矩阵 heatmap
par函数,画图时可以设置一些有趣的参数,比如mar参数等
选项参数
# 选项是买什么,参数是买多少
par()
length(par()) #par函数有72个元素
# 选项参数 包括 1.输入控制部分(函数可以接受哪些类型数据)
# file:接一个文件
# data:一般指要输入一个数据框
# x:表示单独的一个对象,一般都是向量,也可以是矩阵或者列表
# x和y:函数需要两个输入变量
# x,y,z:函数需要三个输入变量
# formula:公式
# na.rm:删除缺失值
?sum
?sd #一个变量
?plot #二维
library(scatterplot3d)
?scatterplot3d #三维
# ... 表示参数可以传递,通用
# 统计分析中多数用到formula参数 一般用波浪线左连接
# 2. 输出控制部分
# 3. 调节部分
# 1.1 根据名字判断选项作用
# color选项用来控制颜色
# select与选择有关
# font与字体有关 font.axis坐标轴的字体
# lty是line type lwd是line width
# method 软件算法
# 1.2 选项接受那些参数
# main:字符串,不能是向量
# na.rm:TRUE或者FALSE
# axis:side参数只能是1到4 ,坐标轴的方向
# fig :包含四个元素的向量 图形区域的位置
# 包含row和col 行列
网友评论