全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1714 1
2016-11-24
1. arrange用法:
按照变量管理行。
arrange(.data, ...)
data为要处理的列;...为要按照某变量排列,默认为升序排列。
> arrange(mtcars, cyl,disp) ##按照变量cyl, disp排序    mpg cyl  disp  hp drat    wt  qsec vs am gear carb1  33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    12  30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    23  32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    14  27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    15  30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    26  22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    17  21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    18  26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    29  21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    210 22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    211 24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    212 19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    613 21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    414 21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4> arrange(mtcars, desc(disp)) ##按照disp变量降序排列    mpg cyl  disp  hp drat    wt  qsec vs am gear carb1  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    42  10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    43  14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    44  19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    25  18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    26  14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    47  15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    48  13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    49  15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    210 15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2 2. filter的用法:
filter(.data, ...)
.data为tbl类型的数据,所有的主要动词为S3类;...为传递的条件,多个条件之间用&连接。

> filter(mtcars, cyl == 8) ##提取mtcars数据中变量cyl为8的数据    mpg cyl  disp  hp drat    wt  qsec vs am gear carb1  18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    22  14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    43  16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    34  17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    35  15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    36  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    47  10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    48  14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    49  15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    210 15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    211 13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    412 19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    213 15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    414 15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8> filter(mtcars, cyl<6 | vs == 1)    mpg cyl  disp  hp drat    wt  qsec vs am gear carb1  22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    12  21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    13  18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    14  24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    25  22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    26  19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    47  17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    48  32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    19  30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    210 33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    111 21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    112 27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    113 26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    214 30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    215 21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2> filter(mtcars, cyl<6 & vs == 1)    mpg cyl  disp  hp drat    wt  qsec vs am gear carb1  22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    12  24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    23  22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    24  32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    15  30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    26  33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    17  21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    18  27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    19  30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    210 21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2 3. group_by的用法:
group_by(.data, ..., add = FALSE)
data为S3类型的tbl数据;... 为要分组的变量,也可为表达式; add为是否添加已存在的组,默认为覆盖。
> grouped <- group_by(mtcars, cyl)  ##mtcars按照cyl分组> groupedSource: local data frame [32 x 11]Groups: cyl [3]     mpg   cyl  disp    hp  drat    wt  qsec    vs    am*          1   21.0     6 160.0   110  3.90 2.620 16.46     0     12   21.0     6 160.0   110  3.90 2.875 17.02     0     13   22.8     4 108.0    93  3.85 2.320 18.61     1     14   21.4     6 258.0   110  3.08 3.215 19.44     1     05   18.7     8 360.0   175  3.15 3.440 17.02     0     06   18.1     6 225.0   105  2.76 3.460 20.22     1     07   14.3     8 360.0   245  3.21 3.570 15.84     0     08   24.4     4 146.7    62  3.69 3.190 20.00     1     09   22.8     4 140.8    95  3.92 3.150 22.90     1     010  19.2     6 167.6   123  3.92 3.440 18.30     1     0# ... with 22 more rows, and 2 more variables:#   gear , carb > summarise(grouped, mean(disp), mean(hp))  ##对分组变量分别求均值# A tibble: 3 × 3    cyl `mean(disp)` `mean(hp)`                1     4     105.1364   82.636362     6     183.3143  122.285713     8     353.1000  209.21429> filter(grouped, disp == max(disp))  ##分别找出各自组中disp的最大值Source: local data frame [3 x 11]Groups: cyl [3]    mpg   cyl  disp    hp  drat    wt  qsec    vs    am          1  21.4     6 258.0   110  3.08 3.215 19.44     1     02  24.4     4 146.7    62  3.69 3.190 20.00     1     03  10.4     8 472.0   205  2.93 5.250 17.98     0     0# ... with 2 more variables: gear , carb > by_vs_am <- group_by(mtcars, vs, am)  ##按照两个变量vs, am分组> by_vs_amSource: local data frame [32 x 11]Groups: vs, am [4]     mpg   cyl  disp    hp  drat    wt  qsec    vs    am*          1   21.0     6 160.0   110  3.90 2.620 16.46     0     12   21.0     6 160.0   110  3.90 2.875 17.02     0     13   22.8     4 108.0    93  3.85 2.320 18.61     1     14   21.4     6 258.0   110  3.08 3.215 19.44     1     05   18.7     8 360.0   175  3.15 3.440 17.02     0     06   18.1     6 225.0   105  2.76 3.460 20.22     1     07   14.3     8 360.0   245  3.21 3.570 15.84     0     08   24.4     4 146.7    62  3.69 3.190 20.00     1     09   22.8     4 140.8    95  3.92 3.150 22.90     1     010  19.2     6 167.6   123  3.92 3.440 18.30     1     0# ... with 22 more rows, and 2 more variables:#   gear , carb > by_va <- summarise(by_vs_am, n = n())   ## 对分组变量进行计数,其中n()只应用于summarise, ##mutate和filter函数> by_vaSource: local data frame [4 x 3]Groups: vs [?]     vs    am     n    1     0     0    122     0     1     63     1     0     74     1     1     7> summarise(by_va, n = sum(n))  ##汇总计数,但是只对第一列# A tibble: 2 × 2     vs     n   1     0    182     1    14> group_by(mtcars, vsam = vs + am) ##分组变量为表达式,默认添加这一列Source: local data frame [32 x 12]Groups: vsam [3]     mpg   cyl  disp    hp  drat    wt  qsec    vs    am           1   21.0     6 160.0   110  3.90 2.620 16.46     0     12   21.0     6 160.0   110  3.90 2.875 17.02     0     13   22.8     4 108.0    93  3.85 2.320 18.61     1     14   21.4     6 258.0   110  3.08 3.215 19.44     1     05   18.7     8 360.0   175  3.15 3.440 17.02     0     06   18.1     6 225.0   105  2.76 3.460 20.22     1     07   14.3     8 360.0   245  3.21 3.570 15.84     0     08   24.4     4 146.7    62  3.69 3.190 20.00     1     09   22.8     4 140.8    95  3.92 3.150 22.90     1     010  19.2     6 167.6   123  3.92 3.440 18.30     1     0# ... with 22 more rows, and 3 more variables:#   gear , carb , vsam  4. mutatetransmute的用法:
mutate(.data, ... )
data为tbl类型数据;... 为融合的变量。
mutate和transmute的区别主要是mutate保持原有变量并新增加变量,而transmute只有新增加的变量。
> mutate(mtcars, displ_l = disp / 61.0237)    mpg cyl  disp  hp drat    wt  qsec vs am gear carb  displ_l1  21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4 2.6219322  21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4 2.6219323  22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1 1.7698044  21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1 4.2278665  18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2 5.8993476  18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1 3.6870927  14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4 5.8993478  24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2 2.4039849  22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2 2.30730010 19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4 2.746474............................................................................................................ > transmute(mtcars, displ_l = disp / 61.0237)    displ_l1  2.6219322  2.6219323  1.7698044  4.2278665  5.8993476  3.6870927  5.8993478  2.4039849  2.30730010 2.746474......................> mutate(mtcars, cyl = NULL) ##去掉cyl一列    mpg  disp  hp drat    wt  qsec vs am gear carb1  21.0 160.0 110 3.90 2.620 16.46  0  1    4    42  21.0 160.0 110 3.90 2.875 17.02  0  1    4    43  22.8 108.0  93 3.85 2.320 18.61  1  1    4    14  21.4 258.0 110 3.08 3.215 19.44  1  0    3    15  18.7 360.0 175 3.15 3.440 17.02  0  0    3    26  18.1 225.0 105 2.76 3.460 20.22  1  0    3    17  14.3 360.0 245 3.21 3.570 15.84  0  0    3    48  24.4 146.7  62 3.69 3.190 20.00  1  0    4    29  22.8 140.8  95 3.92 3.150 22.90  1  0    4    210 19.2 167.6 123 3.92 3.440 18.30  1  0    4    4.................................................................................................... 5. nth,n_distinct的用法:
nth(x, n, order_by = NULL, default = default_missing(x))
x为一个向量;order_by为可选的决定顺序的变量。
> x <- 1:10> nth(x,4)[1] 4n_distinct(x, na_rm = FALSE)
x为数值向量。
n_distinct要比length(unique(x))更快更精确。
> x <- sample(1:10, 1e5, rep = T)> length(unique(x))[1] 10> n_distinct(x)[1] 106. sample_n的用法:
sample_n(tbl, size, replace = FALSE, weight = NULL, .env = parent.frame())
tbl为数据框;size为抽取行数,replace为是否可重复抽样; weight为权重,非负向量,自动转化权重和为1.
> by_cyl <- mtcars %>% group_by(cyl)> sample_n(mtcars, 10, weight = mpg)                mpg cyl  disp  hp drat    wt  qsec vs am gearHonda Civic    30.4   4  75.7  52 4.93 1.615 18.52  1  1    4Fiat 128       32.4   4  78.7  66 4.08 2.200 19.47  1  1    4Merc 280       19.2   6 167.6 123 3.92 3.440 18.30  1  0    4Volvo 142E     21.4   4 121.0 109 4.11 2.780 18.60  1  1    4Hornet 4 Drive 21.4   6 258.0 110 3.08 3.215 19.44  1  0    3Toyota Corona  21.5   4 120.1  97 3.70 2.465 20.01  1  0    3Merc 240D      24.4   4 146.7  62 3.69 3.190 20.00  1  0    4Toyota Corolla 33.9   4  71.1  65 4.22 1.835 19.90  1  1    4Fiat X1-9      27.3   4  79.0  66 4.08 1.935 18.90  1  1    4Mazda RX4 Wag  21.0   6 160.0 110 3.90 2.875 17.02  0  1    4> sample_n(by_cyl, 3) ##对于分组的数据,是对每个组进行抽样Source: local data frame [9 x 11]Groups: cyl [3]    mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear           1  21.5     4 120.1    97  3.70 2.465 20.01     1     0     32  22.8     4 140.8    95  3.92 3.150 22.90     1     0     43  21.4     4 121.0   109  4.11 2.780 18.60     1     1     44  21.4     6 258.0   110  3.08 3.215 19.44     1     0     35  17.8     6 167.6   123  3.92 3.440 18.90     1     0     46  19.7     6 145.0   175  3.62 2.770 15.50     0     1     57  14.7     8 440.0   230  3.23 5.345 17.42     0     0     38  13.3     8 350.0   245  3.73 3.840 15.41     0     0     39  15.0     8 301.0   335  3.54 3.570 14.60     0     1     5# ... with 1 more variables: carb 此文章是我首先发表在我的博客上http://blog.sina.com.cn/s/blog_15dd753ab0102wv83.html
欢迎转载!


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-11-24 22:05:53
内容全乱了,请版主删了吧
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群