R数据处理 | dplyr | plyr | reshape | Tidyverse | 练习
这些包的重要性不必多言,以前没有深度总结过,每次要用的时候都得查教程。
名字由来:d代表dataframe - plyr是英文钳子plier的谐音
dplyr
dplyr常用函数【最常用的也就是group_by和summarise配合使用了,其他的普通代码都能实现】
arrange
arrange(aapl, -Volume) # 对appl数据按照字段Volume进行降序排序
aapl %>% arrange(-Volume) # 管道符 %>% 可读性更强
select
aapl %>% select(Date, Close, Volume) # 选取 Date、Close和Volume三列
aapl %>% select(-c("Open", "High", "Low")) # 排除Open、High、Low,选择剩下的字段的数据
filter
aapl %>% filter(Close>=150) # #从数据中选择appl股价大于150美元的交易数据
aapl %>% filter((Close>=150) & (Close>Open)) # 股价大于150美元 且 收盘价大于开盘价 的交易数据
mutate
aapl %>% mutate(maxDif = High-Low, log_maxDif=log(maxDif)) # 将最好价High减去最低价Low的结果定义为maxDif,并取log
aapl %>% mutate(n=row_number()) # 得到记录的位置(行数)
group_by
weather %>% group_by(city)
summarise
weather %>% group_by(city) %>% summarise(mean_temperature = mean(temperature)) # 按照城市分组,按照城市分别计算平均温度
plyr
plyr重要函数【map_values是唯一常用的函数】
reshape
reshape重要函数【melt是唯一常用的函数】
Tidyverse
tibble vs dataframe
如果你是用R base,那就data.frame吧如果你是要用tidyverse,那就果断tibble,当然tiverse也支持data.frame二者基本是一样的数据结构,tibble多了一些优化设计,只是让你用起来更好,并没有增加使用负担。再一个就是,tidyverse是大势所趋,是比R base好用了数倍不止,比Python的pandas还好用,我建议用tidyverse入门R语言。
dataframe是R原生的,很老了,有很多毛病,例如性能一般、语法书写臃肿、可读性不强,后来有第三方出于以上考虑改进了dataframe,就派生出两个典型系列的包data.table和tibble,data.table侧重性能,tibble侧重语法可读性(优雅,主要是tibble有一系列配套的Rstudio全家桶)。另外补充,tibble是支持嵌套表的,dataframe和data.table并没有。近期,data.table和tibble有融合的趋势,Rstudio团队和一些其他团队,让tibble能尽量使用data.table的引擎(底层是C语言)。
参考:
Aggregating and analyzing data with dplyr