【RStudio+R语言_NoteS】R语言课程练习_加深理解

记录学习旅程~

欢迎各位道友指教与交流~


·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语言的实战

过一遍理解加深,受益匪浅。


敬请指教与交流~

上一篇:dremio v18.0 软件包可以使用了


下一篇:C#父子ID的表数据转换成Tree型Json数据