R语言常见的处理数据的方法汇总(持续更行中)

#基于R语言的数据处理及清洗简单汇总
getwd() #查看工作目录
setwd("E:/工作文件/model") #改变工作目录

#安装及释放包
install.packages("packge-name") #安装包
detach(package:packge-name) #释放包

#并行运算设置
library(doParallel)
cl <- makeCluster(15)
registerDoParallel(cl)

#报错空间溢出:Java heap space,需要设置运行内存
library(rJava)
.jinit(parameters="-Xmx7888m")

#删除R软件运行时保存在内存中的所有对象
rm(list=ls(all=TRUE))

#常规数据查看
data(data) #加载数据集data
head(data) #显示数据集data的前若干条数据
tail(data) #显示数据集data的后若干条数据
str(data) #探寻数据集内部结构
summary(data) #获取数据集data的概括信息
dim(data) #查看数据集data的纪录数和维度数
table(data$is_do) #查看数据集data中维度is_do的数值分布
data<- data[which(data[,11]==1),] #选取data数据表里第11列维度为1的数据
data$field<-as.numeric(data$field) #数值转换
data$field<-as.factor(data$field) #因子转化

for (i in 1:25) {
data[,i] <- as.numeric(as.vector(data[,i]))
} #循环技术进行数据类型转化

#条件选择并赋值
y[which(y<1.5)] <- 1
data$is_do <- ifelse(data$is_do > 0.7 ,2,ifelse(data$is_do > 0.3 ,1,0))

q1_AGE<-quantile(data$AGE, 0.03,na.rm=TRUE) #data数据表中维度AGE从小到大排序前3%处数值
q2_AGE<-quantile(data$AGE, 0.97,na.rm=TRUE) #data数据表中维度AGE从小到大排序前97%处数值
data$AGE <- ifelse(data$AGE < q1_AGE,q1_AGE,data$AGE)
data$AGE <- ifelse(data$AGE > q2_AGE,q2_AGE,data$AGE)

#选择字段及删除字段
data <- data[names(data) %in% c("CN_EFF_DATE", "CN_EXP_DATE")] #选取data数据表中字段CN_EFF_DATE、CN_EXP_DATE
data <- data[!(names(data) %in% c("CN_EFF_DATE", "CN_EXP_DATE"))] #删除data数据表中字段CN_EFF_DATE、CN_EXP_DATE

#抽样
data<-data[sample(nrow(data),10000),] #随机从数据集data中选取10000条纪录
number=sample(nrow(data),1/4*nrow(data)) #计算数据集data样本量1/4的数值
train_example=data[number,] #对数据集data随机抽样number个数

#按比例划分数据
train_sub=sample(nrow(train_example),3/4*nrow(train_example))
train_data=train_example[train_sub,]
test_data=train_example[-train_sub,]
dim(train_data)
dim(test_data)

#变量处理
age_new<-c()
for (i in 1:length(data$AGE)){
if(data$AGE[i]>=0&data$AGE[i]<18)
{age_new[i]<-'少年'}
if(data$AGE[i]>=18&data$AGE[i]<30)
{age_new[i]<-'青年'}
if(data$AGE[i]>=30&data$AGE[i]<60)
{age_new[i]<-'壮年'}
if(data$AGE[i]>=60)
{age_new[i]<-'老年'}
}

#字段合并
data_new<-data.frame(data[,c(1:16)],age_new)

#矩阵归一化(0到1)
b1=(p[,1]-min(p[,1]))/(max(p[,1])-min(p[,1]))

#正则表达式
gsub("\\(.*\\)","",g4$Source)
#正则表达
#. 代表任意字符
#* 匹配0或多个正好在它之前的那个字符
#.*意味着能够匹配任意数量的任何字符

#关于更多正则表达式的处理见https://blog.csdn.net/sinat_26917383/article/details/51122043

#########################更新截止2020年5月18日 19点02分#########################

 

本文大部分内容转自基于R语言的数据处理及清洗简单汇总,作为自己的学习笔记。

posted @ 2020-05-18 21:07  _Jason1122  阅读(1135)  评论(0)    收藏  举报