啊啊啊啊啊吖

2018-11-03   阅读量: 586

数据分析师 R语言

R里的常用创建函数

扫码加入数据分析学习群

算术运算符: +、 -、 *、 /、 ^

它们都是向量化的,使用所谓的“循环法则”。如果一个参数比另一个参数短,那么前

者会自动扩展到同样的长度。当某个参数是单个数值时,这种方式是最有效的: air_

time / 60、 hours * 60 + minute 等。

算术运算符的另一用途是与我们后面将很快学到的聚集函数结合起来使用。例如, x /

sum(x) 可以计算出各个分量在总数中的比例, y – mean(y) 可以计算出分量与均值之间

的差值。

模运算符: %/% 和 %%

%/%(整数除法)和 %%(求余)满足 x == y * (x %/% y) + (x %% y)。模运算非常好

用,因为它可以拆分整数。例如,在航班数据集中,你可以根据 dep_time 计算出 hour

和 minute:

transmute(flights,
dep_time,
hour = dep_time %/% 100,
minute = dep_time %% 100
)
#> # A tibble: 336,776 × 3
#> dep_time hour minute
#> <int> <dbl> <dbl>
#> 1 517 5 17
#> 2 533 5 33
#> 3 542 5 42
#> 4 544 5 44
#> 5 554 5 54
#> 6 554 5 54
#> # ... with 3.368e+05 more rows
对数函数: log()、 log2() 和 log10()

在处理取值范围横跨多个数量级的数据时,对数是特别有用的一种转换方式。它还可以

将乘法转换成加法,我们将在本书的第四部分中介绍这个功能。

其他条件相同的情况下,我推荐使用 log2() 函数,因为很容易对其进行解释:对数

标度的数值增加 1 个单位,意味着初始数值加倍;减少 1 个单位,则意味着初始数值

减半。

偏移函数

lead() 和 lag() 函数可以返回一个序列的领先值和滞后值。它们可以计算出序列的移动

差值(如 x – lag(x))或发现序列何时发生了变化(x != lag(x))。它们与 group_by()

组合使用时特别有用,你很快就会学到 group_by() 这个函数:

(x <- 1:10)
#> [1] 1 2 3 4 5 6 7 8 9 10
lag(x)
#> [1] NA 1 2 3 4 5 6 7 8 9
lead(x)
#> [1] 2 3 4 5 6 7 8 9 10 N

R 提供了计算累加和、累加积、累加最小值和累加最大值的函数: cumsum()、 cumprod()、

commin() 和 cummax(); dplyr 还提供了 cummean() 函数以计算累加均值。如果想要计算

滚动聚合(即滚动窗口求和),那么可以尝试使用 RcppRoll 包:

x
#> [1] 1 2 3 4 5 6 7 8 9 10
cumsum(x)
#> [1] 1 3 6 10 15 21 28 36 45 55
cummean(x)
#> [1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5

逻辑比较: <、 <=、 >、 >= 和 !=

如果需要进行一系列复杂的逻辑运算,那么最好将中间结果保存在新变量中,这样就可

以检查是否每一步都符合预期。

排秩

排秩函数有很多,但你应该从 min_rank() 函数开始,它可以完成最常用的排秩任务

(如第一、第二、第三、第四)。默认的排秩方式是,最小的值获得最前面的名次,使用

desc(x) 可以让最大的值获得最前面的名次:

y <- c(1, 2, 2, NA, 3, 4)
min_rank(y)
#> [1] 1 2 2 NA 4 5
min_rank(desc(y))
#> [1] 5 3 3 NA 2 1

如果 min_rank() 无法满足需要,那么可以看一下其变体 row_number()、 dense_rank()、

percent_rank()、 cume_dist() 和 ntile()。可以查看它们的帮助页面以获得更多信息:

row_number(y)
#> [1] 1 2 3 NA 4 5
dense_rank(y)
#> [1] 1 2 2 NA 3 4
percent_rank(y)
#> [1] 0.00 0.25 0.25 NA 0.75 1.00
cume_dist(y)
#> [1] 0.2 0.6 0.6 NA 0.8 1.0
添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
0.0000 0 2 关注作者 收藏

评论(0)


暂无数据

推荐课程

推荐帖子