R语言入门学习笔记-数据抽取01-字段拆分

目录

1.字段拆分

1.1按照位置拆分

 1.2按照分隔符拆分

 1.3时间属性抽取


数据抽取,也称数据拆分,是指保留、抽取元数据表中的某些记录、字段的部分信息,形成一个新字段、新记录的过程,主要的方法有字段拆分、记录抽样和随机抽样。

1.字段拆分

字段拆分,是指抽取某一字段的部分信息,形成一个新字段的方法。

实际应用举例:

某公司会员表里记录了身份证信息,其中包含很多信息,如籍贯省份、籍贯城市、出生日期、性别等,如果将他们从身份证这个字段中抽取出来,就可以得到相应的新字段,也就可以进行相应的分析,如会员籍身份分布等,甚至可以根据出生日期进行进一步处理,得到年龄、星座、生肖字段。

字段拆分常用的方法有按照位置拆分、按照分隔符拆分,以及时间属性抽取

1.1按照位置拆分

例如,电话号码19800198000的第一位到第三位198,是某个运行商的号码段;第四位到第七位0019,是某个地区的号码段;第八位到第十一位8000,是用户的编号。在了解这个规则信息后,就可以采用按照位置拆分的方法,获取运营商号码段、地区号码段两个新字段。

在R语言中,使用substr函数对字段按位置进行抽取。如下面的例子

#字段拆分
data = read.csv('C:/Users/ABC/Desktop/书籍源代码和配套资源/谁说菜鸟不会数据分析(R语言篇)--数据/第四章/4.4.1 字段拆分/字段拆分.csv')
#该数据有9个电话号码
#将数值型的tel列转化为字符型
data$tel = as.character(data$tel)
#运营商
data['brands']=substr(x=data$tel,start=1,stop=3)
#地区
data['areas']=substr(x=data$tel,start=4,stop=7)
#号码段
data['nums']=substr(x=data$tel,start=8,stop=11)

 1.2按照分隔符拆分

在R语言中,需要用到stringer包中的str_split_fixed()函数。

例如,该数据框中只有一列name(商品标题),现在需要使用字段拆分的方法吧name(商品标题)列拆分为两列:第一列为brand(商品品牌),第二列为commodity_name(商品名称)。

#导入数据
data1=read.csv('C:/Users/ABC/Desktop/书籍源代码和配套资源/谁说菜鸟不会数据分析(R语言篇)--数据/第四章/4.4.1 字段拆分/分隔符.csv',
               fileEncoding="utf8",
               stringsAsFactors=FALSE)
#安装stringr包,加载包
install.packages("stringr")
library(stringr)
#使用空格分隔符将商品标题拆分为品牌名称和商品名称,参数n设置为2
newData=str_split_fixed(string = data1$name,pattern = ' ',n=2)
#重命名列
colnames(newData)=c('brand','commodity_name')

 

 1.3时间属性抽取

时间属性抽取,是从时间型数据中,抽取出需要的部分时间属性,如年、月、日、时、分、秒等。例如,需要按年统计销售额,就要从销售入去中抽取出年份属性,再按年份分组统计销售额。

在时间性数据的列后面加上对应的属性名即可完成抽取,具体的时间数据属性如表

属性说明
year

年,自1900年开始的年数

mon

月,用0到11代表1到12月

mday日,1~31
hour时,0~23
min分,0~59
sec秒,0~61
wday一周内的第几天(从周日开始计数),用0~6代表1~7天
yday一年内的第几天,用0~365代表第1~366天

例如,把年、月、周、日、时、分、秒这7个常用的时间属性抽取出来,并作为新的列加入data2数据框,代码如下:

 首先导入数据,用strptime函数把时间字符列转为“时间型”的数据,然后赋值给“时间”列。

#导入数据
data2=read.csv('C:/Users/ABC/Desktop/书籍源代码和配套资源/谁说菜鸟不会数据分析(R语言篇)--数据/第四章/4.4.1 字段拆分/时间属性.csv',
               fileEncoding="utf8",
               stringsAsFactors=FALSE)
#把注册时间列转换位时间型的数据,然后赋值给“时间”列
data2$时间=strptime(
  data2$注册时间,
  format='%Y/%m/%d %H:%M:%S')

#抽取时间的各种属性,新增到对应的列中
data2$年=data2$时间$year+1990
#因为年份是从1900年开始计数的,所以要加上1900
data2$月=data2$时间$mon+1
#因为月份是从0开始计数的,要加1
data2$周=data2$时间$wday
data2$日=data2$时间$mday
data2$时=data2$时间$hour
data2$分=data2$时间$min
data2$秒=data2$时间$sec

 

 数据代码等来自书《谁说菜鸟不会数据分析-R语言篇》

  • 5
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Terry_trans

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值