r语言rank降序_R数据科学笔记(四)

r语言rank降序_R数据科学笔记(四)_第1张图片

dplyr基础

tibble也是一种数据框, 只是进行了一些小小的修改,使其更适合在 tidyverse 中使用。

变量类型:

  • int 表示整数型变量。
  • dbl 表示双精度浮点数型变量,或称实数。
  • chr 表示字符向量,或称字符串。
  • dttm 表示日期时间(日期 + 时间)型变量。
  • lgl 表示逻辑型变量,是一个仅包括 TRUE 和 FALSE 的向量。
  • fctr 表示因子,R用其来表示具有固定数目的值的分类变量。
  • date 表示日期型变量。

dplyr 核心函数

  • 按值筛选观测(filter())——可以基于观测的值筛选出一个观测子集。
  • 对行进行重新排序(arrange())—— 改变行的顺序,使用 desc() 可以按列进行降序排序,缺失值总是排在最后。
  • 按名称选取变量(select())——select() 函数可以让你快速生成一个有用的变量子集。
  • 使用现有变量的函数创建新变量(mutate())——需要添加新列,新列是现有列的函数。
  • 将多个值总结为一个摘要统计量(summarize())——进行分组摘要,如果不与 group_by() 一起使用,那么 summarize() 也就没什么大用。group_by() 可以将分析单位从整个数据集更改为单个分组。group_by() 和 summarize() 的组合构成了使用 dplyr 包时最常用的操作之一:分组摘要。
  • 以上函数都可以和 group_by() 函数联合起来使用,group_by() 函数可以改变以上每个函数 的作用范围,让其从在整个数据集上操作变为在每个分组上分别操作。当使用多个变量进行分组时,每次的摘要统计会用掉一个分组变量。如果想要取消分组,并回到未分组的数据继续操作,那么可以使用 ungroup() 函数
R要么输出结果,要么将结果保存在一个变量中。如果想同时完成这两种操作,那么你可以 用括号将赋值语句括起来
计算机使用的是 有限精度运算(显然无法存储无限位的数),因此请记住,你看到的每个 数都是一个近似值。比较浮点数是否相等时,不能使用 ==,而应该使用 near()。
x %in% y。这会选取出 x 是 y 中的一个值时的所有行。

(2) dplyr 中对筛选有帮助的另一个函数是 between()。它的作用是什么?你能使用这个函数 来简化解决前面问题的代码吗? ?between()

select () 函数中使用一些辅助函数。

  • starts_with("abc"):匹配以“abc”开头的名称。
  • ends_with("xyz"):匹配以“xyz”结尾的名称。
  • contains("ijk"):匹配包含“ijk”的名称。
  • matches("(.)1"):选择匹配正则表达式的那些变量。这个正则表达式会匹配名称中有重复字符的变量。你将在第 10 章中学习到更多关于正则表达式的知识。
  • num_range("x", 1:3):匹配 x1、x2 和 x3。
  • select() 函数和 everything() 辅助函数结合起来使用。当想要将几个变 量移到数据框开头时,这种用法非常奏效。
  • rename() 函数来重命名变量,以保留所有未明确 提及的变量。

(2) 如果在 select() 函数中多次计入一个变量名,那么会发生什么情况?

不会发生什么,select()函数会自动忽略重复

(3) one_of() 函数的作用是什么?为什么它结合以下向量使用时非常有用?

one_of() is superseded in favour of the more precise any_of() and all_of() selectors.

(4) 以下代码的运行结果是否出乎意料?选择辅助函数处理大小写的默认方式是什么?如何 改变默认方式?

ignore.case = FALSE

常用创建函数:

  • 算术运算符:+、-、*、/、^
  • 模运算符:%/% 和 %%
  • 对数函数:log()、log2() 和 log10()
  • 偏移函数 lead() 和 lag() 函数可以返回一个序列的领先值和滞后值。
  • 累加和滚动聚合 R提供了计算累加和、累加积、累加最小值和累加最大值的函数:cumsum()、cumprod()、 commin() 和 cummax();dplyr 还提供了 cummean() 函数以计算累加均值。如果想要计算 滚动聚合(即滚动窗口求和),那么可以尝试使用 RcppRoll 包。
  • 逻辑比较:<、<=、>、>= 和 !=
  • 排秩:min_rank()、row_number()、dense_rank()、 percent_rank()、cume_dist() 和 ntile()。 与Mysql的窗口函数很像。

常用摘要函数:

  • 位置度量:mean()、median()
  • 分散程度度量:sd(x)、IQR(x) 和 mad(x)
  • 秩的度量:min(x)、quantile(x, 0.25) 和 max(x)
  • 定位度量:first(x)、nth(x, 2) 和 last(x)
  • 计数:n()、计算出非缺失值的数量,可以使用 sum(!is.na(x))。要想计算出唯一值的数量,可以使用 n_ distinct(x)、count(variable, wt = weights)。
  • 逻辑值的计数和比例:sum(x > 10) 和 mean(y == 0)

管道函数(13章的内容)

管道 %>% 来自于 Stefan Milton Bache 开发的 magrittr 包。因为 tidyverse 中的包会自动加载 %>%,所以通常你无须显式地加载 magrittr。

支持管道操作是 tidyverse 中的 R包的核心原则之一。唯一的例外就是 ggplot2:它是在发 现管道方式前开发的。ggplot2 的下一个版本 ggvis 支持管道操作。

重点在于转换的过程,而不是转换的对象,这使得代码具有更好的可读性。

在阅读代码时,%>% 最好读作“然后”。使用这种方法时,x %>% f(y) 会转换为 f(x, y),x %>% f(y) %>% g(z) 会转换为 g(f(x, y), z),以此类推。

本质:

foo_foo %>% 
    hop(through = forest) %>% 
    scoop(up = field_mouse) %>% 
    bop(on = head)

my_pipe <- function(.) {
       
    . <- hop(., through = forest) 
    . <- scoop(., up = field_mice) 
    bop(., on = head)
} 
my_pipe(foo_foo)

管道不能支持以下两类函数:

  • 使用当前环境的函数。 assign()、 get()、load()。
  • 使用惰性求值的函数。在 R中,不会在函数调用前计算这种函数的参数,只在函数使用时才进行计算。管道依次计算每个参数,因此不能用在这种函数上。try()、suppressMessages() 和 suppressWarnings()。

不适合使用管道的情形:

  • 操作步骤超过 10(参考值)个。这种情况下,应该使用有意义的变量来保存中间结果。 这样会使得调试更加容易,因为你更容易检查中间结果;还可以使得代码更容易理解, 因为有意义的变量名称可以帮助别人明白你的代码意图。
  • 有多个输入和输出。如果需要处理的不是一个基本对象,而是组合在一起的两个或多个 对象,就不要使用管道。
  • 操作步骤构成一张具有复杂依赖关系的有向图。管道基本上是一种线性操作,如果使用 它来表示复杂的关系,通常会使得代码混乱不清。

其他管道函数的操作:

  • “T”管道操作符 %T>%。它的用法和 %>% 差不多,只是它返回的是左侧项而不是右侧项。
  • 如果使用的函数不是基于数据框的(也就是说,你必须传给这些函数一个独立的向量, 不能传给它们数据框或基于数据框求值的表达式),那么你就会发现爆炸操作符 %$% 的妙处。它可以将数据框中的变量“炸出来”,让你显式地引用。当需要使用R基础包中的很多函数时,这个操作符特别奏效。
  • %<>% 操作符来执行赋值操作

你可能感兴趣的:(r语言rank降序)