本文的主要来源是R语言中的dplyr、plyr、reshape、reshape2
1. dplyr包
(1)all.equarls
用于data.frames中的all.equal
(2)Data manipulation functions
do:返回值为一个data frame或object,存储于一个list里面;处理moels的时候非常适用
带有名字的参数时,do与dlply等同;带没有名字的参数时,do与ldply等同
filter
select:
select()仅保留部分变量
rename()保留所有变量
starts_with:names 以x开始
ends_with:names以x结束
contains:names中包含x
matches:names中存在与x匹配的
num_range:选取范围
one_of:
everything:
arrange
mutate
summarise:将多个values结合成一个单独的value
summarise_each:
mutate_each:
tally:是对summarise的包装,可调用n或sum()函数
count:
summarize
selection:
starts_with(x,ignore.case = FALSE)names starts with x
ends_with
contains
matches
num_range
(3)tbl家族
tbl(src, ...):从data source处创建一个table
tbl_cube:一个cube tbl用于存储紧密型数组格式的数据,维名不能重复
tbl_df:封装一个data frame,adavanges:仅打印出一部分列
tbl_dt:一个数据table用于封装现有的data table
tbl_vars:列出一个tbl中所有的variables
data_frame:创建一个数据框
(4)bench_compare
(5)between
x > x1 & x < x2
(6)build_sql
(7)chain或%>%、%.%(函数中的替代)
从左向右操作数据,而不是从里到外
(8)compute
compute:强制性计算,让数据处于远程源中
collect:强制性计算,但将数据取以tbl_df形式存储
collapse:非强制性计算,将数据转换成一种有其他限定的格式
(9)copy_to、copy_to.src_sql
copy_to:将本地数据上传到远程数据源
copy_to.src_sql:为所有sql sources操作的方法
(10)cumall
cumall:
cumany:
cummean:
(11)desc
将vector转换成一种格式,可将数据展现为降序顺序来展示
> desc(1:10)
[1] -1 -2 -3 -4 -5 -6 -7 -8 -9 -10
> desc(factor(letters))
[1] -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18
[19] -19 -20 -21 -22 -23 -24 -25 -26
> first_day <- seq(as.Date("1910/1/1"), as.Date("1920/1/1"), "years")
> first_day
[1] "1910-01-01" "1911-01-01" "1912-01-01" "1913-01-01" "1914-01-01"
[6] "1915-01-01" "1916-01-01" "1917-01-01" "1918-01-01" "1919-01-01"
[11] "1920-01-01"
> desc(first_day)
[1] 21915 21550 21185 20819 20454 20089 19724 19358 18993 18628 18263
(12)distinct
distinct/unique
仅保留输入tbl中的unique/distinct行
unique.distinct()适用于uqc
(13)explain
explain:
print:
str:
show_query:
(14)failwith
当有error时,更改function,返回一个默认的value
try_default
(15)funs
将函数名像列名一样使用,作为其他fn的输入
funs:
funs_:
(16)glimpse
查看数据
(17)group系列
grouped_dt:创建一个grouped的data table
groupes:
group_by:
group_size:
(18)join系列
join:
inner_join:
left_join:
semi_join:
anti_join:
join.tbl_dt:
join.tbl_df:
join.tbl_sql:
(19)lead-lag
> lead(1:10, 1)
[1] 2 3 4 5 6 7 8 9 10 NA
> lead(1:10, 2)
[1] 3 4 5 6 7 8 9 10 NA NA
> lag(1:10, 1)
[1] NA 1 2 3 4 5 6 7 8 9
(20)location
location():
changes(x,y):
> changes(mtcars, mtcars)
> changes(mtcars, mtcars2)
Changed variables:
old new
cyl2 002598E8
Changed attributes:
old new
names 270C1148 26FAC3E0
row.names 289F5628 1887A080
class 0F87A5F0 09954BC0
(21)mutate
Mutate增加新的varibales,并保留已存在的;transmute丢弃已存在的variables
mutate:
mutate_. :
transmute:
transmute_ :
(22)n
n:当前群体中的观测数目
nasa:时间空间数据
nth:从vector中提取出第n个value
first:从vector中提取出第1个value
last:从vector中提取出最后一个value
n_distinct:计算出数据集中为unique value的个数
x <- sample(1:10, 1e5, rep = TRUE)
x
length(unique(x))
n_distinct(x)
(23). order_by 、ranking、arrange
order_by:对fn的输出结果进行排序的函数
> x <- 10:1
> y <- 1:10
> order_by(x,cumsum(y))
[1] 55 54 52 49 45 40 34 27 19 10
> x <- 10:1
> y <- 1:10
> y
[1] 1 2 3 4 5 6 7 8 9 10
> x
[1] 10 9 8 7 6 5 4 3 2 1
ranking:
row_number(x):等于于rank(ties.method = 'first')
mtile(x,n):
min_rank(x):rank(ties.method = 'min')
dense_rank(x):要求ranks中没有gap,与min_rank相类似
percent_rank(x):
cume_dist(x):
(24). rbind_list、rowwise
rbind_list:rbind多个df
rbind_all:
rowwise:用于以do的处理,也可用于对每一行进行复杂的操作
(25).sample
sample:从一个table中抽取n行
sample.int:
sample_n:
sample_frac:
(26). setops、slice
setops重载了base包中的set函数,提供了处理df较有效的方法
intersect:
union:
setdiff:
setequal:
slice:根据position来选择rows
(27). src_mysql、src_postgres、src_sqlite、src_tbls
src_mysql:连接一个已有的mysql或mariadb数据库
show_query、explain用于查看具体的SQL的内容
所有的SQL tbls是lazy调用的,返回的是一个新的tbl_sql对象,可使用compute运行query,并将results临时保存在db中,或使用collect将结果检索出来放到R中。
src_postgres:连接到已存在的postgresql db, tbl连接到db中的tables
src_sqlite:连接到一个轻量级别的db
src_tbls:罗列出source中的所有tbls
(28)top_n
top_n:使用filter、min_rank等来选择一个group中的前n个词条,并使用wt进行排序
top_n(x,n,wt)
(29)translate_sql
translate_sql:将一个expression转化为sql
translate_sql_q:
2. plyr包
(1)aaply、adply、alply、a_ply
aaply:input数组,output数组
adply:
alply:
a_ply:对数组中的第一分片,应用fn,并将结果discard
(2)arrange
arrange:对df中的数据,按columns进行order
(3)as.data.frame.function
as.data.frame.function:将已有的函数包装在一个新的fn中,并以df的形式返回
(4)as.quoted
as.quoted:将characters、formulas及calls转换成quoted变量
(5)colwise
colwise:将对vector的操作函数转换成对df中column的操作函数
操作离散数值变量
catcolwise:
numcolwise:
(6)count
可理解为将x进行分组,并将结果以data.frame的格式输出
> count(baseball[1:100,], vars = "id")
id freq
1 ansonca01 8
2 bennech01 1
3 burdoja01 7
4 forceda01 9
5 galvipu01 1
6 gerhajo01 5
7 hinespa01 6
8 jonesch01 6
9 mathebo01 7
10 morrijo01 2
11 nelsoca01 5
12 orourji01 6
13 shaffor01 4
14 snydepo01 5
15 startjo01 7
16 suttoez01 7
17 whitede01 7
18 yorkto01 7
(7)create_progress_bar
创建执行函数时的进度条
(8)daply、ddply、dlply、d_ply
(9)defaults
对list变量进行defaults值的设定
(10)desc
将一个vector转换成以降序进行的格式进行排序
(11)dlply、d_ply
(12)each
each:将多个函数放在一个函数中调用,返回的是换函数名组成的向量进行输出的output
> each(min, max)(1, 10,100)
min max
1 100
(13)failwith
failwith:modify一个fn,当有error时,返回一个default value
(14)here
here:当前的evaluation context
(15)idata.frame
idata.frame:创建一个immutable的df;与一般的df没有多大差别,只是返回的是对original df的参照,而非copy。因此,在操作有很从groups的large datasets时,有较大的优势。
(16)join、join_all
join:跟merge类似
join_all:循环join一系列的df
(17)liply、l_ply
liply:liply(.iterator,.fun = NULL,...)iterator:叠代对象
(18)maply、mdply、mlply、m_ply
maply:调用一个具有多参数的函数,值是从df或array中取得,并将结果组合成一个array
(19)mapvalues
mapvalues:对于vector或factor,用新values代替具体的某个values
(20)match_df
match_df:与join是类似的,但返回的是与第一个dataset相匹配的rows
match_df与join语法类似,但与match不同;条件准则是==,而不是identical;不能用于atomic vectors中的columns;若没有matches,某一行将会被路过。
(21)mutate、summarise
mutate:对df进行操作,增加或替代某一行,与transform类似
summarise:与mutate类似,但不是往已有的df中增加一个columns,而是新建一个df。
(22)name_rows
name_rows:Plyr函数忽略了row names,因此可将它们转换成具体的df中的columns。在plyr处理后,可用再次使用name_rows将rownames写出
(23)baseball、ozone数据集
(24)progress_text、progress_time、progress_tk、progress_win
progress_text:文本进度条
progress_time:
progress_tk:在Tk window中呈现图表进度条
progress_win:
(25)raply、rdply、rlply、r_ply
raply:重复调用expression,并将结果以array形式返回
rdply:调用expression n次,并将results输出到一个df中
rlply:调用expression n 次,并将结果combine,以list模式输出
r_ply:调用expression n次,并将结果discard
(26)rbind.fill、rbind.fill.matrix
rbinds一系列df,并用NA来填充缺失的columns
rbind,fill.matrix:通过使用column names或column indices将matrices绑定在一起;事先,numeric columns
转化为character;若matrix没有colnames,则使用column number。
(27)rename
rename:更改name,而不变化position
(28)revalue
revalue:用新的values替换具体的values,用于factor或character vector
(30)round_any
round_any:任何一个number的周围的多个值
(31)splat
splat:将一个fn封闭在一个do.call中,因此不用带多个参数,只需传递一个named list即可
(32)strip_splits
strip_splits:对df中的每一column进行处理,除了用于split的variales
(33)take
take:从任意维中挑选出一个子集
(34)vaggregate
vaggregate:与tapply类似,但与id的使用有关系
3. reshape包
(1)cast、sweep
cast:将分解后的df转化为reshaped或aggregated的形式
sweep:input是一个array,返回一个经处理后的summary statistic形式的数组
(2)colsplit
colsplit:将一个vector分解为多个columns,用于split组合在一起的一个column
(3)combine_factor
combine_factor:combine因素水平,较容易地可将多个levels组合起来
(4)condense.df
condense.df:压缩一个df,与by很类似,但是将数据保留在df格式中
(5)expand.grid.df
expand.grid.df:expand df类型的grid,即创建一个新的df,包含原始df中的所有rows的combination
(6)funstofun
funstofun:将多个fns合并成一个单独的fn,返回的是一个名称型的向量
(7)melt、melt.data.frame、metl.array、melt.list
melt:melt一个object,将其转化为易于casting的形式
met.data.frame:
melt.array:
melt.list
(8)merge_all、merge_recurse
merge_all:将一系列df进行merge
merge_recurse:对dfs进行叠代merge
(9)namerows
namerows:向df中增加variables,使其包含rownames
(10)recast
recast:单步进行melt和cast
(11)rename
rename:重新定义一个object
(12)rescaler
rescaler: rescaling data
(13)sort_df
sort_df:sort 一个df
(14)sparseby、by、tapply
sparseby:将一个fn应用到一个df上面,根据indices的水平进行split
by:将一个fn运用到df上,按factors进行split
tapply:
(15)stamp
stamp:与reshape类似,但是将全部的df传给stamping,而不是某些variables
(16)uniquedefault
uniquedefault:设置defaut值,若非unique
(17)untable
untable:untable一个dataset,与table相反
4. reshape2包
(1)add_margins
add_margins:给一个df增加margins
(2)cast、acast、dcast、recast
cast:将一个经molten的df转化为array或df
acast:
dcast:
(3)colsplit
colsplit:split一个vector为多columns
(4)melt
melt:
melt.array:
melt.default:
melt.data.frame
melt.list
(5)melt_check
melt_check:对input进行check,以确定是否适合melt
(6)parse_formula
parse_formula: