第九章 数据清理和转换

第九章 数据清理和转换

9.1清理字符串

函数 作用
grep、grepl和regexpr 找到与模式相匹配的字符串
sub和gsub 能替换匹配的字符串。
str_detect 返回一个可用于索引的逻辑向量
str_split 接受一个向量作为输入参数,且将返回一个列表,这是因为每个输入的字符串可以被分成长度不同的向量。
str_count 计算出它们在每个名称中的出现次数
str_replace 仅仅替换掉第一匹配的字符串
str_replace_all 替换掉第一匹配的字符串

9.2操作数据框

9.2.1处理缺失值

缺失值记号

  • NA (Not Available,不可用)表示缺失值。
  • NaN (Not a Number,非数值)表示不可能出现的值。
函数 作用
complete.cases(x) 告诉我们哪些行没有缺失值
na.omit(x) 它能删除数据框中所有带有缺失值的行
is.na(x) 检测缺失值是否存在
anyNA(x, recursive = FALSE) 判断数据中是否存在缺失值

当一组数据符合正太分布时,我们知道正太分布大多数都集中在一起,所以使用平均值替代缺失值,

teacher <- c(1,NA,3,4,NA)
country <- c("CAN","US","RUS","UK","NL")
age <- c(NA,29,55,NA,143)
gender1 <- c("M","F","M","M","F")
FT <- data.frame(teacher,country,age,gender1)
FT$teacher[[5]] <- mean(FT$teacher,na.rm = T)

如果一组包含缺失值的数据符合偏态分布,那么我们可以使用数据的中位数来替代出现缺失值的部分

FT$teacher[[2]] <- median(FT$teacher,na.rm = T)

还可以用众数

FT$teacher[[2]] <- as.numeric(names(table(teacher)))[table(Ateacher == max(table(teacher))]

生成缺失数据报告,使用mice包

library(mice)
md.pattern(FT)

9.2.2在宽和长表格之间进行转换

reshape 的函数能用于宽和长形式之间的转换。

但更好的选择是使用 reshape2 包中的功能。melt数将宽形式转换成长形式,dcast 函数把长转换回宽形式

9.3排序

sort 函数按向量从小到大(或从大到小)排序

x表示需要排序的数据集

na.last=NA(默认)表示在排序结果中缺失值将被删除。na.last=TRUE表示将数据缺失值放在最后,na.last=FALSE表示将数据缺失值放在前面。

decreasing = FALSE表示按从小到大的顺序进行排序,decreasing =TRUE表示按从大到小的顺序排序

sort(x, decreasing = FALSE,  ...)

order函数的功能为对数据进行排序,返回值为最小(大)值、次小(大)值……次大(小)值、最大(小)值所在的位置。order 在对数据框排序时非常有用,因为数据框不能直接使用 sort。

x表示需要排序的数据集

na.last=NA(默认)表示在排序结果中缺失值将被删除。na.last=TRUE表示将数据缺失值放在最后,na.last=FALSE表示将数据缺失值放在前面。

order(...,  na.last = TRUE, decreasing = FALSE)

rank函数为返回向量中每个数值对应的秩

x表示需要排序的数据集。

na.last=NA(默认)表示在排序结果中缺失值将被删除。na.last=TRUE表示将数据缺失值放在最后,na.last=FALSE表示将数据缺失值放在前面。

ties.method用于设定对数据集中重复数据的秩的处理方式,ties.method = "average"表示对重复数据的秩取平均值作为这几个数据共同的秩,ties.method = "first"表示重复数据中的位于前面的数据的秩取小,位于后边的依次递增,“random”表示随机定义重复数据的秩,“max”表示以重复数据可能对应的最大秩作为这几个数据共同的秩,“min”表示以重复数据可能对应的最小秩作为这几个数据共同的秩。

rank(x, na.last = TRUE, ties.method = c("average",  "first",  "random",  "max", "min")) 

9.4其他函数

Negate函数接受一个谓词(predicate,即一个返回逻辑向量的函数),并返回另一个刚好相反的谓词。当输入是 FLASE 时,它将返回 TRUE;输入是 FALSE,它返回 TRUE:

Filter函数可以接受两个参数:第一个参数为返回一个逻辑向量的函数;其次为一个输入向 量,它只有在函数返回为 TRUE 时才返回那些值

Position函数将返回第一个把谓词应用于矢量上而返回 TRUE 的索引下标

Find函数返回的是第一个值

Map 函数将一个函数应用于输入参数中的每个元素上。

Reduce 函数能把一个二元函数转变为一个接受多个输入的函数。

posted @   昵称已经被使用  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示