【数据挖掘】练习2:数据管理2

课后作业2:数据管理2

一:上机实验2

编写函数stat,要求该函数同时计算均值,最大值,最小值,标准差,峰度和偏度。

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| install.packages("timeDate") library(timeDate) stat <- function(x) { result <- c( mean_value = mean(x), max_value = max(x), min_value = min(x), sd_value = sd(x), kurtosis_value = kurtosis(x), skewness_value = skewness(x) ) return(result) } |

设置随机种子

|--------------|
| set.seed(66) |

生成自由度为2的t分布的100个随机数t

|--------------------------------|
| (t_values <- rt(100, df = 2)) |

通过函数stat计算t的均值,最大值,最小值,标准差,峰度和偏度。

|-----------------------------|
| (result <- stat(t_values)) |

二:思考与实验总结

1:如何通过数据管理得到实际情况中需要的数据集格式?

主要通过以下数据管理方面的操作手段,获得实际情况的数据集格式。

|----|-------|------------------------------------------------|
| 编号 | 操作概念 | 操作内容 |
| 1 | 变量重命名 | 修改数据库和列表的变量名,或修改矩阵的行名和列名 |
| 2 | 缺失值分析 | 识别包含缺失值的观测,判断数据中是否存在缺失值,删除含有缺失值的观测 |
| 3 | 数据排序 | 按照降序或升序排序数据,返回排序后的向量、向量中每个数值对应的秩、或排序数据所在向量中的索引 |
| 4 | 随机抽样 | 实现放回简单或不放回简单随机抽样,对数据进行随机分组 |
| 5 | 字符串处理 | 从文本型数据中抽取信息,为打印输出和生成报告重设文本的格式 |
| 6 | 文本分词 | 对文本进行合理的分割,便捷地获取关键信息 |

操作流程主要为:创建新变量------缺失值分析------函数构建与使用------字符串处理------控制流设置语句的执行顺序。

2:merge函数的自行实现

Merge函数的主要功能是:通过共同列或者行名合并数据框,或者执行其他合并操作。

Merge函数的语法主要为:

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| merge(x, y, by = intersect(names(x), names(y)), by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all, sort = TRUE, suffixes = c(".x",".y"), no.dups = TRUE, incomparables = NULL, ...) |

其中,x和y参数表示要合并的数据框或对象;by、by.x和by.y指定合并的列;all、all.x和all.y是控制填充的逻辑值;sort决定结果是否按照公共列排序;suffixes标明后缀出处。

(1)当合并所用到的共同列在数据框中的列名称相同时

【1】构建数据框

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 名称 <- c('郭靖','黄蓉','华筝','梅超风','杨康','穆念慈') 性别 <- c('M','F','F','F','M','F') 亲属 <- c('郭啸天','黄药师','铁木真','陈玄风','完颜洪烈','杨铁心') data <- data.frame(名称,性别,亲属,stringsAsFactors = F) data 名称 <- c('郭靖','黄蓉','王重阳','梅超风','欧阳锋','一灯大师') 身份 <- c('侠之大者','女中诸葛','全真教掌门','黑风双煞','白驼山庄主','大理高僧') 武功 <- c('降龙十八掌',' 落英神剑掌','全真剑法','九阴白骨爪','蛤蟆功','一阳指') pd <- data.frame(名称,身份,武功,stringsAsFactors = F) pd |

【2】按照默认方式合并,即有共同属性的列被合并(此处为名称)

|-----------------|
| merge(data, pd) |

(2)当合并所用到的共同列在数据框中的列名称相同时

【1】构建数据框

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| # merge()函数 名称 <- c('郭靖','黄蓉','华筝','梅超风','杨康','穆念慈') 性别 <- c('M','F','F','F','M','F') 亲属 <- c('郭啸天','黄药师','铁木真','陈玄风','完颜洪烈','杨铁心') data <- data.frame(名称,性别,亲属,stringsAsFactors = F) data 姓名 <- c('郭靖','黄蓉','王重阳','梅超风','欧阳锋','一灯大师') 身份 <- c('侠之大者','女中诸葛','全真教掌门','黑风双煞','白驼山庄主','大理高僧') 武功 <- c('降龙十八掌',' 落英神剑掌','全真剑法','九阴白骨爪','蛤蟆功','一阳指') pd <- data.frame(姓名,身份,武功,stringsAsFactors = F) pd |

【2】按照指定列合并

|------------------------------------|
| merge(data,pd,by.x='名称',by.y='姓名') |

(3)逻辑值all为假时

【1】交集合并(默认情况)

|------------------------------------------|
| merge(data,pd,by.x='名称',by.y='姓名',all=F) |

(4)逻辑值all为真时

【1】并集合并

|-------------------------------------------------|
| merge(data,pd,by.x = '名称',by.y = '姓名',all=TRUE) |

(5)逻辑值all.x=TRUE且all.y=FALSE时

【1】取x的全集与匹配的y数据

|---------------------------------------------------------------|
| merge(data,pd,by.x = '名称',by.y = '姓名',all.x=TRUE,all.y=FALSE) |

(6)逻辑值all.y=TRUE且all.x=FALSE时

【1】取y的全集与匹配的x数据

|---------------------------------------------------------------|
| merge(data,pd,by.x = '名称',by.y = '姓名',all.y=TRUE,all.x=FALSE) |

(7)sort的调用

【1】是否按照公共列排序

|----------------------------------------------------------------------------------------------------------------------|
| merge(data,pd,by.x = '名称',by.y = '姓名',all=TRUE,sort=TRUE) merge(data,pd,by.x = '名称',by.y = '姓名',all=TRUE,sort=FALSE) |

(8)suffix的调用

【1】构建数据框

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| # merge()函数 名称 <- c('郭靖','黄蓉','华筝','梅超风','杨康','穆念慈') 性别 <- c('M','F','F','F','M','F') 亲属 <- c('郭啸天','黄药师','铁木真','陈玄风','完颜洪烈','杨铁心') 武功 <- c('空明拳','兰花拂穴手','无','摧心掌','九阴白骨爪','逍遥游拳法') data <- data.frame(名称,性别,亲属,武功,stringsAsFactors = F) data 姓名 <- c('郭靖','黄蓉','王重阳','梅超风','欧阳锋','一灯大师') 身份 <- c('侠之大者','女中诸葛','全真教掌门','黑风双煞','白驼山庄主','大理高僧') 武功 <- c('降龙十八掌',' 落英神剑掌','全真剑法','九阴白骨爪','蛤蟆功','一阳指') pd <- data.frame(姓名,身份,武功,stringsAsFactors = F) pd |

【2】默认显示变量来源的后缀

|-----------------------------------------------------------------------------------|
| merge(data,pd,by.x = '名称',by.y = '姓名',all=TRUE,sort=TRUE,suffixes = c('.x','.y')) |

【3】个性化显示变量来源的后缀

|---------------------------------------------------------------------------------------|
| merge(data,pd,by.x = '名称',by.y = '姓名',all=TRUE,sort=TRUE,suffixes = c('.data','.pd')) |

三:实验参考

[1] merge()函数--R语言_merge函数-CSDN博客

[2] R语言的merge函数_r语言merge函数用法-CSDN博客

相关推荐
limingade2 小时前
手机实时提取SIM卡打电话的信令和声音-新的篇章(一、可行的方案探讨)
物联网·算法·智能手机·数据分析·信息与通信
编程零零七2 小时前
Python数据分析工具(三):pymssql的用法
开发语言·前端·数据库·python·oracle·数据分析·pymssql
2401_858286113 小时前
52.【C语言】 字符函数和字符串函数(strcat函数)
c语言·开发语言
铁松溜达py3 小时前
编译器/工具链环境:GCC vs LLVM/Clang,MSVCRT vs UCRT
开发语言·网络
everyStudy3 小时前
JavaScript如何判断输入的是空格
开发语言·javascript·ecmascript
jiao000014 小时前
数据结构——队列
c语言·数据结构·算法
C-SDN花园GGbond4 小时前
【探索数据结构与算法】插入排序:原理、实现与分析(图文详解)
c语言·开发语言·数据结构·排序算法
迷迭所归处5 小时前
C++ —— 关于vector
开发语言·c++·算法
架构文摘JGWZ6 小时前
Java 23 的12 个新特性!!
java·开发语言·学习
leon6256 小时前
优化算法(一)—遗传算法(Genetic Algorithm)附MATLAB程序
开发语言·算法·matlab