【数据挖掘】练习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博客](https://blog.csdn.net/chongbaikaishi/article/details/115740560 "merge()函数--R语言_merge函数-CSDN博客") \[2\] [R语言的merge函数_r语言merge函数用法-CSDN博客](https://blog.csdn.net/OYY_90/article/details/82431085 "R语言的merge函数_r语言merge函数用法-CSDN博客")

相关推荐
Coding小公仔1 小时前
C++ bitset 模板类
开发语言·c++
凌肖战1 小时前
力扣网C语言编程题:在数组中查找目标值位置之二分查找法
c语言·算法·leetcode
小赖同学啊2 小时前
物联网数据安全区块链服务
开发语言·python·区块链
shimly1234562 小时前
bash 脚本比较 100 个程序运行时间,精确到毫秒,脚本
开发语言·chrome·bash
weixin_478689762 小时前
十大排序算法汇总
java·算法·排序算法
IT_10242 小时前
Spring Boot项目开发实战销售管理系统——数据库设计!
java·开发语言·数据库·spring boot·后端·oracle
luofeiju2 小时前
使用LU分解求解线性方程组
线性代数·算法
new_zhou3 小时前
Windows qt打包编译好的程序
开发语言·windows·qt·打包程序
ye903 小时前
银河麒麟V10服务器版 + openGuass + JDK +Tomcat
java·开发语言·tomcat