R 中的 dplyr 这个数据处理包提供简单的语法和很好的数据处理速度. dplyr 根据自己的语法生成了一个 SQL 语句进行数据处理.

1
2
install.packages("dplyr")
library(dplyr)

数据导入

常见导入文件的方法:

  • MySQL: RMySQL
  • SQL Server: RODBC
  • SQLite: RSQLite

read.table

1
2
3
4
5
6
read.table(file = "I",
header = FALSE,
sep = "",
nrows = -1,
skip = 0,
fill = !blank.lines.skip)
  • file 文件路径
  • header 是否将第一行读取为列名
  • sep 文件的分隔符
  • nrows 读取的行数
  • skip 跳过开始的 skip 行开始读取
  • fill 将缺失值定义为 NA

read.csv

不多介绍…

dplyr 基础函数

数据转换

将数据转换为 table:

1
tbl_df(data)

数据筛选

filter

filter 可以返回满足的条件的观测值, 是通过一些准则来选取观测值

语法:

1
filter(tbl, color == "blue")

比如删选出数据中包含1,4 的数据:

1
filter(df, value %in% c(1,4))

select

select 可以只保留选择的变量, 是通过名字来选取观测值

语法:

1
select(tbl,选择条件)

用于选择的函数:

函数 解释
starts_with(x,ignore.case = TRUE) 以字符 x 开始的变量
ends_with(x,ignore.case = TRUE) 以字符 x 结束的变量
contains(x,ignore.case = TRUE) 选取所有含字符 x 的变量
matches(x,ignore.case = TRUE) 选取匹配正则表达式 x 的变量
num_range(“x”,1:5,width = 2) 选取 x01 到 x05 的变量
one_of(“x”,”y”,”z”) 选取包含在声明变量中的
everything() 选取所有变量

数据排序

传统方法是通过 order 来实现
arrange 根据变量对数据框进行排序

语法:

1
arrange(df1, color)

或者:

1
arrange(df1, desc(color))

多个排序只要往后加就可以.

数据扩展

mutate 在保留原变量的基础上增加变量

语法:

1
mutate(tbl, double = 2 * value)

transmutate 类似 mutate, 但是会删去原有变量

数据汇总

summarise 将多个值汇总为一个数据值

语法:

1
summarize(tbl, total = sum(value), avg = mean(value))

在 summarise() 中使用汇总函数, 会将一列值转换为一个单独的值输出.

R 自带的统计函数都是可用的: min(), max(), mean(), sum(), sd()…

此外, 还有其他一些函数:

n() 观测值的个数
n_distinct(x) 不相同观测值的个数
first(x), last(x) 和 nth(x,n) 获取第一个, 最后一个和第 n 个数据

dplyr 高级函数

数据集的连接(Join)

函数 解释
left_join(x,y, by = “name”) 保留 x 表所有内容,将 y 表中匹配的数据追加进来,没有的数据显示 NA
inner_join(x,y, by = “name”) 只保留能匹配到的值, 没有匹配的数据舍弃
semi_join(x,y, by = “name”) 只把匹配到的 x 表的数据保留下来, 其他数据舍弃
anti_join(x,y, by = “name”) 只把没有匹配到的 x 表的数据保留下来

分组汇总 group by

group_by 将数据转变成一个分好组的数据框

语法:

1
by_color <- group_by(tbl,color)

管道函数

%>% 或者 %.% 可以将上一个函数的输出作为下一个函数的输入

语法:

1
2
> 1:5 %>% mean()
> [1] 3

或者:

1
2
> 1:5 %>% mean(.) %>% sqrt()
> [1] 1.7321

do 方法

语法:

1
do(data, fun(.))

fun 中可以放入方法.

colwise 方法

对每一列都调用同样的函数:

1
2
3
library(plyr)
head(iris)
colwise(function)(data.frame)

连接数据库 MySQL

语法:

1
2
3
4
src= src_mysql("sqlbook")
orderSQL = tbl(src, from = "orders")
newOrder = select(orderSQL, orderid, orderdate)
newOrder

查看 dplyr 的 SQL 语句:

1
neworder$query

1
2

参考:

http://www.cnblogs.com/nxld/p/6060534.html
http://www.xueqing.tv/course/31

相关扩展包

数据导入

  • foreign 提供各类数据接口
  • RODBC 数据库接口
  • RCurl 网络爬虫包的接口
  • quantmod 金融数据接口
  • ggmap 谷歌地图 api
  • baidumap 百度地图接口

数据处理

  • data.table 数据框扩展
  • reshape2 长型宽型数据的转换
  • VIM 缺失值插补和可视化
  • plyr 向量话数据处理
  • caret 挖掘前数据处理(缺失值,训练集)
  • plymr 用于 RHadoop 的分布式存储数据的处理