全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
11552 1
2013-03-06
February 28, 2012
By 写长城的诗


This post was kindly contributed by 数据科学与R语言 - go there to comment and to read the full post.


尽管R语言的主要处理对象是数字,而字符串有时候也会在数据分析中占到相当大的份量。特别是在文本数据挖掘日趋重要的背景下,在数据预处理阶段你需要熟练的操作字符串对象。当然如果你擅长其它的处理软件,比如Python,可以让它来负责前期的脏活。

获取字符串长度:nchar()能够获取字符串的长度,它也支持字符串向量操作。注意它和length()的结果是有区别的。

字符串粘合:paste()负责将若干个字符串相连结,返回成单独的字符串。其优点在于,就算有的处理对象不是字符型也能自动转为字符型。

字符串分割:strsplit()负责将字符串按照某种分割形式将其进行划分,它正是paste()的逆操作。

字符串截取:substr()能对给定的字符串对象取出子集,其参数是子集所处的起始和终止位置。

字符串替代:gsub()负责搜索字符串的特定表达式,并用新的内容加以替代。sub()函数是类似的,但只替代第一个发现结果。

字符串匹配:grep()负责搜索给定字符串对象中特定表达式 ,并返回其位置索引。grepl()函数与之类似,但其后面的"l"则意味着返回的将是逻辑值。

一个例子:
我们来看一个处理邮件的例子,目的是从该文本中抽取发件人的地址。该文本在此可以下载到。邮件的全文如下所示:
----------------------------
Return-Path: skip@pobox.com
Delivery-Date: Sat Sep  7 05:46:01 2002
From: skip@pobox.com (Skip Montanaro)
Date: Fri, 6 Sep 2002 23:46:01 -0500
Subject: [Spambayes] speed
Message-ID: <15737.33929.716821.779152@12-248-11-90.client.attbi.com>

If the frequency of my laptop's disk chirps are any indication, I'd say
hammie is about 3-5x faster than SpamAssassin.

Skip
----------------------------
# 用readLines函数从本地文件中读取邮件全文。
data <- readLines('data')  
# 判断对象的类,确定是一个文本型向量,每行文本是向量的一个元素。
class(data)  
# 从这个文本向量中找到包括有"From:"字符串的那一行
email <- data[grepl('From:',data)]
#将其按照空格进行分割,分成一个包括四个元素的字符串向量。
from <- strsplit(email,' ')
# 上面的结果是一个list格式,转成向量格式。
from <- unlist(from)
# 最后搜索包含'@'的元素,即为发件人邮件地址。
from <- from[grepl('@',from)]

在字符串的复杂操作中通常会包括正则表达式(Regular Expressions),关于这方面内容可以参考?regex

Tags: 入门教程, 编程

【转自】http://www.r-bloggers.com/lang/chinese/897



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-3-8 10:46:43
THX~学习了~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群