记录学习旅程~
欢迎各位道友指教与交流~
·Part Ⅰ 导入
library(module)
setwd() # 设置当前工作目录
getwd() # 获取当前工作目录
·Part Ⅱ 创建对象
worksheet_a <- read.csv("文件路径",
colClasses = c("character", rep("numeric", 13),
"character", rep("numeric", 33)))
# colClasses是指明各变量的类型;character是字符型;numeric是数值型
# c()函数是合并各向量,rep()函数是重复向量多次
说明:可见,在读取csv时,共有48个向量,其中第1个、第15个向量申明为字符型,其余向量为数值型。1,...13个后,15,...33个.
·Part Ⅲ 处理数据
str(worksheet_a)
# str()查看对象结构
worksheet_a <- worksheet_a %>%
mutate_if(is.character, list(~na_if(.,"")))
# 对象=经过处理后的源对象;%>%叫管道函数,即左边为输入传递给右边作输出给对象
# is.character是判断是否为字符型;
# mutate_if();mutate英文是改变的意思,if表条件;可以理解为当满足某条件时改变,改变啥呢?变量
# is.character;当为True时被改变;改变成啥呢?空值变NA
# list()函数是调用的列表,迭代出变量
worksheet_a.nvars <-
worksheet_a[,
lapply(worksheet_a, class)=="numeric"]
# .nvars得到新数据框
# class()函数判断一个变量的类型,此处取数值型
# lapply(对象,函数)函数是将函数应用于对象取出特定变量
summary(worksheet_a.nvars)
# summary()函数查看各变量描述统计量
descrip <- function(nvar)
# 自定义函数
descrip <- function(nvar)
{
nmiss <- length(which(is.na(nvar)))
mean <- mean(nvar, na.rm=TRUE)
std <- sd(nvar, na.rm=TRUE)
min <- min(nvar, na.rm=TRUE)
Q1 <- quantile(nvar, 0.25, na.rm=TRUE)
median <- median(nvar, na.rm=TRUE)
Q3 <- quantile(nvar, 0.75, na.rm=TRUE)
max <- max(nvar, na.rm=TRUE)
c(nmiss, mean, std, min, Q1, median, Q3, max)
}
# nmiss-nvar中miss的数;which()函数获取逻辑型向量中取值为T的元素序号,结合is.na(nvar)为取出
# nvar缺失的序号;length()函数获取向量长度
# .rm是去除的意思;mean()函数计算变量的均值
# sd()函数计算变量的标准偏差
# min()函数计算变量的最小值
# quantile()函数计算变量的指定分位数,此处为下四分位数
# median()函数计算变量的中位数
# quantile()函数计算变量的指定分位数,此处为上四分位数
# max()函数计算变量的最大值
worksheet_a_nvars_description <-
lapply(worksheet_a.nvars, descrip) %>%
as.data.frame() %>% t()
# lapply()函数将descrip()函数应用于worksheet_a对象数据框中的每个变量,产生关于描述统计量的列表
# as.data.frame()函数将列表转为R数据框;t()函数将数据框装置
colnames(worksheet_a_nvars_description) <-
c('nmiss', 'mean', 'std', 'min', 'Q1', 'median', 'Q3', 'max')
# colnames()函数获得对象的名称,重新命名
·Part Ⅳ 生成图像
write.csv(worksheet_a_nvars_description,
"xxx/worksheet_a_nvars_description.csv")
# 存为csv文件,第一个参数为对象数据框,第二个参数为路径名称
pdf('xxx/worksheet_a_graph.pdf', family='GB1')
# GB1输出为中文
for (i in 1:ncol(worksheet_a.nvars)) {
hist(worksheet_a.nvars[, i],
xlab=names(worksheet_a.nvars)[i],
main=paste0('graph of',
names(worksheet_a.nvars)[i]),
col='grey')
}
# 用python的思想可以理解
# hist()函数画第i个变量的直方图
# xlab指定横轴标签名称
# main指定图的标题
# paste0()函数将'graph of'和变量名称粘贴一起
# col指定直方图各柱填充颜色
dev.off()
# 输出至PDF
·Part Ⅴ 小结
数据来源可从数据挖掘——基于R语言的实战
过一遍理解加深,受益匪浅。
敬请指教与交流~