R data Manipulation

本文的主要来源是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:



















你可能感兴趣的:(R)