Rr数据挖掘和人工智能

R:数据处理常用包

2019-08-21  本文已影响0人  wo_monic

dplyr data.table
dplyr data.table对比
dplyr参考
数据处理经常用到的包
dplyr,data.table,Base R,tidyverse
数据处理一般的流程:
1.数据过滤(去重)
2.选择
3.比对,匹配
4.分组
5.排序
6.抽样
在excel中也可以完成上述操作,但是当数量达到十万以上级别后,excel速度慢如蜗牛。

dplyr用法示例

数据去重

distinct(df,V1,V2) 根据V1和V2两个条件来进行去重

新增列

mutate(df,vnew1=v1-v2,vnew2=vnew1+v3) 支持在创建的新列的基础上,再新建列。

过滤函数

filter(df,cond1,cond2,…) 用逗号,隔开表示条件是and的关系
filter(df,cond1|cond2|…) 用竖线|隔开表示条件是or的关系
slice(df,80:100) 选取索引80到100的数据

排序

arrange(df,V1,desc(V2),V3)V1,V3升序,V2降序
arranage(df,V1) 升序排列V1
arrange(df,desc(V3))降序排列V3

选择

select(df,V1,V2,V3)选择V1,V2,V3这三列
select(df,V1:V3) 选择V1到V3列之间的所有列
select(df,-c(v1,V3))选择除V1,V3之外的所有列

分组

group_by(df,V1,V2)df根据V1,V2进行分组

计算统计数据

summarise(df,mean(V1),sum(V4))

随机抽取

sample_n(df,1000)随机抽取1000个数据
sample_frac(df,0.7) 随机抽取70%的数据

参考地址https://www.cnblogs.com/nxld/p/6060533.html

数据格式转换tidyr包

library(tidyr)
library(dplyr)
长短数据的转换主要是用于ggplot2的出图,ggplot2需要的是长数据,而我们日常输入的数据是宽数据

宽数据实例
下面数据的第一列数字是R中的行号
allinfo内容如下

     province  primary   middle   senior    higher postgraduate
1     北京 109.4579 110.5105 96.20949  98.91572    107.82594
2     天津 113.4776 114.0266 94.79238  99.90067     88.54674
3     河北 114.6299 113.0214 91.19643  87.67520     81.96543
4     山西 107.9786 108.3219 92.03961  82.94410     73.76735
5   内蒙古 109.1339 108.9091 92.13359  89.96668     67.54206
6     辽宁 110.3081 110.8525 91.70425 112.46839     87.90451

allinfoNew内容如下
转换成长数据后
allinfoNew <- allinfo %>% gather(school,value, -province)
将allinfo的所有列,除了province列之外全部合并成两列,一列是school,一列是value.

       province       school     value
1      北京      primary 109.45794
2      天津      primary 113.47760
3      河北      primary 114.62993
4      山西      primary 107.97863
5    内蒙古      primary 109.13391
6      辽宁      primary 110.30810
7      北京       middle 110.51045
8      天津       middle 114.02665
9      河北       middle 113.02139
10     山西       middle 108.32195
11   内蒙古       middle 108.90907
12     辽宁       middle 110.85252
13     北京       senior  96.20949
14     天津       senior  94.79238
15     河北       senior  91.19643
16     山西       senior  92.03961
17   内蒙古       senior  92.13359
18     辽宁       senior  91.70425
19     北京       higher  98.91572
20     天津       higher  99.90067
21     河北       higher  87.67520
22     山西       higher  82.94410
23   内蒙古       higher  89.96668
24     辽宁       higher 112.46839
25     北京 postgraduate 107.82594
26     天津 postgraduate  88.54674
27     河北 postgraduate  81.96543
28     山西 postgraduate  73.76735
29   内蒙古 postgraduate  67.54206
30     辽宁 postgraduate  87.90451

长数据转为宽数据

allinfoFat <- allinfoNew %>% spread(school,value)
allinfoFat和allinfo的内容一致。
school是要拆分的列的对象,value是要拆分列的值。

tidyr包:(gather(宽数据转为长数据)、spread(长数据转为宽数据)、unit(多列合并为一列)、separate(将一列分离为多列))

上一篇 下一篇

猜你喜欢

热点阅读