R语言数据预处理基本流程

#涉及到的R包
# library(readr)
# library(dplyr)
# library(ggplot2)

library(readr)
Reg_Data <- read_delim("C:/Items/R_Projects/R_DataMining/Data/Original_Data/Rg_Data.txt",
   "\t", escape_double = FALSE, col_names = FALSE,
trim_ws = TRUE)

# 查看基本情况以及基本的数据清洗
# 查看数据的基本字段,字段的含义以及字段的顺序,字段的数据类型
# 各个字段是否有缺失值,值的范围,数据是否有重复值
# 数据不一致情况,以及数据量和小批量数据示例
str(Rg_Data)
View(Rg_Data)
# 找出重复数据的函数 duplicated - 判断对象的每个取值是否重复
# 去除所有列和去除选择的列 Rg_Data[!duplicated(Rg_Data),] #删掉所有列上都重复的
which(duplicated(Rg_Data))
which( duplicated(Rg_Data[,c(2)]) )
Rg_Data[which( duplicated(Rg_Data[,c(2)]) ) , ]
#unique返回对象的不同取值

#统计多列的重复数据- 统计频率
library(dplyr)
#  统计后的X2的顺序发生了变化,sort的排序针对的是排序后的字段n,
#  所以不能使用which等来标记
 countData <- count(Rg_Data,X2,sort = FALSE)
 # 重复的次数的情况
 repcount <- filter(count(Rg_Data,X2,sort = FALSE),n>=2)$X2
 Rg_Data[which( Rg_Data$X2 %in% repcount),]
 filter(Rg_Data,Rg_Data$X2 %in% repcount)

 # 去重- 用来排除有重复记录的行
 distinct(Rg_Data)
 distinct(select(Rg_Data,X2))

 # 判断是否有NA值-并过滤
filter(Rg_Data, is.na(Rg_Data$X1)|  is.na(Rg_Data$X2) )     
# 增加字段
newData <-  mutate(Rg_Data,month= substr(Rg_Data$X1,1,6))

# 分组后通常使用 summarise function 或者 window function 两类函数操作
# 在不分组的情况下使用,这时可以看做是只分为一组的特殊情况
# 分组计数-分组的聚合函数   having 可以使用filter来代替
by_month <- group_by(newData,  month)
newDataMonth <- summarise(by_month,count = n(),aa=sum(!is.na(month)))

# 分组之后的窗口函数
 by_Day <- group_by(Rg_Data, groupname= as.character(Rg_Data$X2) )
 mutate(by_Day,  employee_age = row_number(X1), rank_salary = min_rank(desc(X1)))
 mutate(by_Day,  employee_age = row_number(X1))
 View(mutate(by_Day,  employee_age = row_number(X1), rank_salary = min_rank(desc(X1))))
 transmute(by_Day,  employee_age = row_number( X1), rank_salary = min_rank(desc(X1)) )

 #默认排序都是从小到大、从低到高,正序排列;如果要倒序,则可使用 desc()
 windowfun <-  mutate(by_Day,  employee_age = row_number(X1) )
 windowfun <-  mutate(by_Day,  employee_age = row_number(desc(X1)) )
 View(windowfun)

 # 联合left_join  semi_join
 # mydata <- left_join(x=userno_cash,y=userno_lastcash,by=c('userno'),copy=F)

 #集合操作
 setdiff(Rg_Data$X1,Rg_Data$X1)
 setdiff(Rg_Data$X1,Rg_Data$X1)
 intersect(Rg_Data$X1,Rg_Data$X1)
 union(Rg_Data$X1,Rg_Data$X1)

 # 绘图
 library(ggplot2)
 p1 <-  ggplot(data = newDataMonth) + geom_bar(mapping = aes(x = month, y = aa,fill=month),stat="identity")
 p1

参考

利用R语言进行数据分析 http://lixionghui.com/blog/
https://github.com/tidyverse/dplyr
R语言简明说明 https://www.rstudio.com/resources/cheatsheets/

blogroll

social