PDF 83 / 520 Logs log(), log2(), log10()
English · PDF 83
Original PDF page 83
中文 · PDF 83

对数 log(), log2(), log10()

对数是处理跨越多个数量级的数据时极其有用的变换。它还能将乘法关系转换为加法关系,这一特性我们将在第四部分再次讨论。

在其他条件相同的情况下,我推荐使用 log2(),因为它易于解释:对数尺度上相差 1 对应于原始尺度上翻倍,相差 –1 则对应于减半。

偏移函数

lead() 和 lag() 允许你引用前导值或滞后值。这使你可以计算运行差分(例如 x - lag(x))或找出值发生变化的位置(x != lag(x))。它们与 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 NA

累积与滚动汇总

R 提供了计算运行和、运行积、运行最小值和运行最大值的函数:cumsum()、cumprod()、cummin()、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

逻辑比较 <, <=, >, >=, !=

如果你要执行一系列复杂的逻辑运算,通常最好将中间值存储在新变量中,这样你就可以检查每一步是否按预期工作。