R语言数据预处理

一、日期时间、字符串的处理

日期

Date: 日期类,年与日

POSIXct: 日期时间类,精确到秒,用数字表示

POSIXlt: 日期时间类,精确到秒,用列表表示

Sys.date(), date(), difftime(), ISOdate(), ISOdatetime()

#得到当前日期时间

(d1=Sys.Date())  
#日期       
年月日

(d3=Sys.time())  
#时间       
年月日时分秒  通过format输出指定格式的时间

(d2=date())      
#日期和时间  年月日时分秒  "Fri Aug 20
11:11:00 1999"

myDate=as.Date('2007-08-09')

class(myDate)    
#Date

mode(myDate)     
#numeric

#日期转字符串

as.character(myDate)

birDay=c('01/05/1986','08/11/1976') #

dates=as.Date(birDay,'%m/%d/%Y')   
#向量化运算,对向量进行转换

dates

# %d    天
(01~31)

# %a   
缩写星期(Mon)

# %A   
星期(Monday)

# %m   
月份(00~12)

# %b   
缩写的月份(Jan)

# %B   
月份(January)

# %y   
年份(07)

# %Y   
年份(2007) 

# %H    时

# %M    分

# %S    秒

td=Sys.Date()

format(td,format='%B  %d %Y %s')

format(td,format='%A,%a ')

format(Sys.time(), '%H %h %M %S %s')

#日期转换成数字

as.integer(Sys.Date())  #自1970年1月1号至今的天数

as.integer(as.Date('1970-1-1')) #0

as.integer(as.Date('1970-1-2')) #1

sdate=as.Date('2004-10-01')

edate=as.Date('2010-10-22')

days=edate-sdate

days   
#时间类型相互减,结果显示相差的天数

ws=difftime(Sys.Date(),as.Date('1956-10-12'),units='weeks')
#可以指定单位

#把年月日拼成日期

(d=ISOdate(2011,10,2));class(d)  #ISOdate
的结果是POSIXct

as.Date(ISOdate(2011,10,2))    
#将结果转换为Date

ISOdate(2011,2,30)            
#不存在的日期 结果为NA

#批量转换成日期

years=c(2010,2011,2012,2013,2014,2015)

months=1

days=c(15,20,21,19,30,3)

as.Date(ISOdate(years,months,days))

#提取日期时间的一部分

p=as.POSIXlt(Sys.Date())

p=as.POSIXlt(Sys.time())

Sys.Date()

Sys.time()

p$year 1900   #年份需要加1900

p$mon
1      
#月份需要加1

p$mday

p$hour

p$min

p$sec

字符串处理

nchar() 、length()

paste()、outer()

substr()、strsplit()

sub()、gsub()、grep()、regexpr()、grepexpr()

#字符串

x='hello\rwold\n'

cat(x)   
#woldo 
hello遇到\r光标移到头接着打印wold覆盖了之前的hell变成woldo

print(x)  #

#字符串长度

nchar(x)  #字符串长度

length(x) #1 向量中元素的个数

#字符串拼接

board=paste('b',1:4,sep='-') #"b-1" "b-2" "b-3" "b-4"

board

mm=paste('mm',1:3,sep='-')  
#"mm-1" "mm-2" "mm-3"

mm

outer(board,mm,paste,sep=':') #向量的外积 

 
#[,1]      
[,2]      
[,3]    
 

  #[1,] "b-1:mm-1" "b-1:mm-2" "b-1:mm-3"

  #[2,] "b-2:mm-1" "b-2:mm-2" "b-2:mm-3"

  #[3,] "b-3:mm-1" "b-3:mm-2" "b-3:mm-3"

  #[4,] "b-4:mm-1" "b-4:mm-2" "b-4:mm-3"

#拆分提取

board

substr(board,3,3) #子串

strsplit(board,'-',fixed=T) #拆分 

#修改

sub('-','.',board,fixed=T) #修改指定字符

board

mm                
#"mm-1" "mm-2" "mm-3"

sub('m','p',mm)   
#替换第一个匹配项 "pm-1" "pm-2" "pm-3"

gsub('m','p',mm)   #替换全部匹配项
"pp-1" "pp-2" "pp-3"

#查找

mm=c(mm, 'mm4')   #"mm-1" "mm-2"
"mm-3" "mm4"

mm

grep('-',mm)     
#1 2 3 向量中1,2,3包含'-'

regexpr('-',mm)  
#匹配成功会返回位置信息,没有找到则返回-1 

二、数据预处理

保证数据质量

准确性

完整性

一致性

冗余性

时效性

...

1、提取有效数据,需要业务人员配合(主观),及相关的技术手段保障

2、了解数据定义,统一对数据定义的理解

...

数据集成 : 对多数据源进行整合

数据转换 :

数据清洗 : 异常数据,缺失数据

数据约简 : 提炼,行,列




三、数据集成

通过merge对数据进行集成

#数据集成

#merge pylr::join (包::函数)

(customer =
data.frame(Id=c(1:6),State=c(rep("北京",3),rep("上海",3))))

(ol =
data.frame(Id=c(1,4,6,7),Product=c('IPhone','Vixo','mi','Note2')))

merge(customer,ol,by=('Id'))  #inner join

merge(customer,ol,by=('Id'),all=T) # full join

merge(customer,ol,by=('Id'),all.x=T)  # left outer
join 左链接,左边数据都在

merge(customer,ol,by=('Id'),all.y=T)  # right
outer join 右链接,右边数据都在

#union 去重 在df1 和df2 有相同的列名称下 

(df1=data.frame(id=seq(0,by=3,length=5),name=paste('Zhang',seq(0,by=3,length=5))))

(df2=data.frame(id=seq(0,by=4,length=4),name=paste('Zhang',seq(0,by=4,length=4))))

rbind(df1,df2)数据分析师培训

merge(df1,df2,all=T)    
#去重,不使用by

merge(df1,df2,by=('id')) #重名的列会被更改显示 

四、数据转换

构造属性

规范化(极差化、标准化)

离散化

改善分布

R语言数据预处理的更多相关文章

  1. R语言--数据预处理

    一.日期时间.字符串的处理 日期 Date: 日期类,年与日 POSIXct: 日期时间类,精确到秒,用数字表示 POSIXlt: 日期时间类,精确到秒,用列表表示 Sys.date(), date( ...

  2. R语言数据接口

    R语言数据接口 R语言处理的数据一般从外部导入,因此需要数据接口来读取各种格式化的数据 CSV # 获得data是一个数据帧 data = read.csv("input.csv" ...

  3. R语言数据的导入与导出

    1.R数据的保存与加载 可通过save()函数保存为.Rdata文件,通过load()函数将数据加载到R中. > a <- 1:10 > save(a,file='d://data/ ...

  4. R语言 数据重塑

    R语言数据重塑 R语言中的数据重塑是关于改变数据被组织成行和列的方式. 大多数时间R语言中的数据处理是通过将输入数据作为数据帧来完成的. 很容易从数据帧的行和列中提取数据,但是在某些情况下,我们需要的 ...

  5. 最棒的7种R语言数据可视化

    最棒的7种R语言数据可视化 随着数据量不断增加,抛开可视化技术讲故事是不可能的.数据可视化是一门将数字转化为有用知识的艺术. R语言编程提供一套建立可视化和展现数据的内置函数和库,让你学习这门艺术.在 ...

  6. 第六篇:R语言数据可视化之数据分布图(直方图、密度曲线、箱线图、等高线、2D密度图)

    数据分布图简介 中医上讲看病四诊法为:望闻问切.而数据分析师分析数据的过程也有点相似,我们需要望:看看数据长什么样:闻:仔细分析数据是否合理:问:针对前两步工作搜集到的问题与业务方交流:切:结合业务方 ...

  7. 第三篇:R语言数据可视化之条形图

    条形图简介 数据可视化中,最常用的图非条形图莫属,它主要用来展示不同分类(横轴)下某个数值型变量(纵轴)的取值.其中有两点要重点注意: 1. 条形图横轴上的数据是离散而非连续的.比如想展示两商品的价格 ...

  8. 第五篇:R语言数据可视化之散点图

    散点图简介 散点图通常是用来表述两个连续变量之间的关系,图中的每个点表示目标数据集中的每个样本. 同时散点图中常常还会拟合一些直线,以用来表示某些模型. 绘制基本散点图 本例选用如下测试数据集: 绘制 ...

  9. 第四篇:R语言数据可视化之折线图、堆积图、堆积面积图

    折线图简介 折线图通常用来对两个连续变量的依存关系进行可视化,其中横轴很多时候是时间轴. 但横轴也不一定是连续型变量,可以是有序的离散型变量. 绘制基本折线图 本例选用如下测试数据集: 绘制方法是首先 ...

随机推荐

  1. 5-MySQL高级-事务-回滚(3)

    回滚 为了演示效果,需要打开两个终端窗口,使用同一个数据库,操作同一张表 step1:连接 终端1 select * from goods_cates; step2:增加数据 终端2:开启事务,插入数 ...

  2. 【POJ】1426 Find The Multiple

    题目链接:http://poj.org/problem?id=1426 题意:给定一个正整数n,找一个比n大且能只由01构成的且能够被n整除的数. 题解:这个就是在后面添0和添1小心试探.一定要是添0 ...

  3. Deep Dive into Neo4j 3.5 Full Text Search

    In this blog we will go over the Full Text Search capabilities available in the latest major release ...

  4. 9.ActiveMQ理论

    一.首先说下什么是消息队列? 1.消息队列是在消息的传输过程中保存消息的容器. 二.为什么要用到消息队列? 主要原因是由于在高并发环境下,由于来不及同步处理,请求往往会发生堵塞,比如说,大量的inse ...

  5. Nginx配置web服务

    Nginx配置虚拟主机 虚拟主机概述 所谓虚拟主机,在web服务里就是一个独立的网站站点,这个站点对应独立的域名(也可以是IP或者端口),具有独立的程序及资源目录,可以独立的对外提供服务,继而给用户访 ...

  6. spark 变量使用 broadcast、accumulator

    broadcast 官方文档描述: Broadcast a read-only variable to the cluster, returning a [[org.apache.spark.broa ...

  7. CentOS 7 下配置 Nginx + PHP7.1 + MariaDB 以及 Laravel 框架

    <!doctype html> CentOS 7 下配置 Nginx + PHP7.1 + MariaDB 以及 Laravel 框架.mdhtml {overflow-x: initia ...

  8. C#学习笔记----反射基础

    反射基础 反射用于在程序运行过程中,获取类里面的信息或发现程序集并运行的一个过程.通过反射可以获得.dll和.exe后缀的程序集里面的信息.使用反射可以看到一个程序集内部的类,接口,字段,属性,方法, ...

  9. springboot EL @Value

    一,springboot中 看一下代码: @Controller public class HelloController { //读取枚举值 @Value("#{T(com.example ...

  10. double to string 损失精度的问题

    https://blog.csdn.net/magieclarence/article/details/6792511?utm_source=blogxgwz0 类似于这样 double 的精度是一个 ...