dplyr包在数据变换方面非常的好用,它有很多易用性的体现:比如书写数据内的变量名时不需要引号包裹,也不需要绝对引用,而这在多数baseR函数中都不是这样的,比如: library(tidyverse)...AST中的元素要么是Symbol,要么是常量,Symbol包括函数和变量。 比如对于语句:f(x, "y", 1),它的AST如下图所示,其中f、x是Symbol,”y"、1是常量。 ?...group_v) %>% summarise(mean_mpg = mean(mpg)) } ### 调用函数,进行分组汇总的操作 map(group_v, ~mean_manuel(mtcars[1:...# 3 4 21 上述过程的实现过程是,首先map逐一将分组变量group_v的元素传递给mean_manual函数,传入mean_manual时,先使用!!...PS:对于ggplot2而言也是一样的,它的aes也是不能直接使用变量传入列名,如果想要使用赋值了字符串的变量来传值的话,可以如上述操作。 但是也有更简单的的办法,它是?
+ x + }) 其中复合语句中也可以简化的调用数据框的列。...pivot_longer/pivot_wider 大部分功能是类似的,这里主要说下pivot_longer 针对下面情况的功能: 我们需要 指定切分变量名和随访号的模式,以解决一行中有多个属性的多次观测的情形...dplyr 包的 summarse_at() 函数可以指定一批变量名与一批统计函数,自动命名结果变量,如: d.cancer %>% summarise_at( c("v0", "v1"), list(...nest 和 unnest 函数,可以将子数据框保存在 tibble 中,可以将保存在 tibble 中的子数据框合并为一个大数据 框。...实际上,tibble 允许存在数据类型是列表 (list) 的列,子数据框就是以列表数据类型保存在 tibble 的一列中的。
最后我们将简要介绍一下历史,说明为什么我们更喜欢 across() 而不是后一种方法(即 _if(), _at(), _all() 变体函数)以及如何将你的旧代码转换为新的语法实现。...下面是联合 across() 和它最喜欢的动词函数 summarise()的一些例子。但你也可以联合 across() 和任意其他的 「dplyr」 动词函数,我们后面会提及。..._if, _at, _all 「dplyr」 以前的版本允许以不同的方式将函数应用到多个列:使用带有_if、_at和_all后缀的函数。这些功能解决了迫切的需求而被许多人使用,但现在被取代了。..._at() 函数是 「dplyr」 中唯一你需要手动引用变量名的地方,这让它们比较奇怪且难以记忆。 为什么过了这么久才发现 across()?...幸运的是,将已有的代码转换为使用 across() 实现通常是非常直观的: 去掉函数 _if(), _at() and _all() 后缀 调用 across(),第一个参数如下: 后面如果还有参数,保持原样即可
tidyverse 中许多函数都可以创建 tibble,因为 tibble 是 tidyverse 的标准功能之一。 可以通过 tibble() 函数使用一个向量来创建新 tibble。...可以在 tibble 中使用在 R 中无效的变量名称(即不符合语法的名称)作为列名称。例如, 列名称可以不以字母开头,也可以包含特殊字符(如空格)。...创建 tibble 的另一种方法是使用 tribble() 函数,tribble 是 transposed tibble(转置 tibble) 的缩写。...) class(df) ## [1] "data.frame" 与 data.frame 比较 tibble 和传统 data.frame 的使用方法主要有两处不同:打印和取子集。...除了打印列名,tibble 还会打印出列的类型,这项非常棒的功能借鉴于 str() 函数。
# 当然如果想要用新变量替换原来的变量,只需把新变量命名为原来的变量名: mutate(birthwt, lwt.kg = lwt*0.4536) 5.使用 summarise( ) 计算统计量 函数...相对于传统的数据框,tibble 在很多方面具有优势,感兴趣的读者可以参阅函数 tibble( ) 的帮助文档。...我们可以用函数 as_tibble( ) 将传统的数据框转换为 tibble,也可以用函数 as.data.frame( ) 将 tibble 转换成传统的数据框。...as_tibble(birthwt) 下面我们将会看到,把函数 group_by( ) 和 summarise( ) 联合使用能方便地对变量进行分组统计。 7....传递操作符 %>% 将该符号之前的对象传递给符号后面的函数并作为函数的第一个参数值。
3.4 使用select()选择列 通过基于变量名的操作,select()函数可以让你生成一个有用的变量子集。...day”之间的所有列(包括“year”和“day”) select(flights, year:day) #> # A tibble: 336,776 × 3 #> year month day #>...解答 select()调用会忽略重复的内容。任何重复的变量只包含一次,即在它们出现的第一个位置。如果存在重复变量select()函数不会引发错误或警告,也不会输出任何消息。...vars <- c( "year", "month", "day", "dep_delay", "arr_delay" ) 解答 one_of()函数的作用是:选择带有字符向量的变量,而不是不带引号的变量名参数...这个函数很有用,因为通过编程生成带有变量名的字符向量比生成不带引号的变量名更容易,后者更容易键入。
这就涉及到参数的调用,局部变量和全局变量的问题 另一个例子 df <- data.frame( y = 1, var = 2 ) var <- "y" df[[var]] #> [1] 1...df$y #> [1] 1 这两种表达式,最后都会将y值提取,严格上讲 [[是一个评估函数,因此可以使用var这种间接引用 $ 是一个引用函数 Quote 和 quote # 将cyl 引用 x_var...,但实际函数中使用的是 enquo和!!...函数 # map函数的具体使用后续再考虑 # 简单说就是对第一个参数(数据集、或者list)分别使用第二参数(函数) # 在r语言中...其实相当于list # expr...函数是将代码转换为表达式,但是并不执行 # 目的是和添加新变量名 summary_vars <- purrr::map(summary_vars, function(var) { expr
多次以不同的参数调用同一个函数。 处理列表列。 这些问题通常可以通过 for 循环简单地解决掉,但如果能够自然地将其流程化将是一个非常好的方案。...这意味着rowwise()和mutate()提供了一种优雅的方式,可以使用不同的参数多次调用函数,并将输出与输入一起存储。...在更复杂的问题中,你可能还希望改变被调用的函数。...作为替代方案,我们建议使用 purrr 的 map() 函数执行逐行操作。但是,这很有挑战性,因为您需要根据变化的参数数量和结果类型来选择映射函数,这需要相当多的 purrr 函数知识。...它有两种主要的运作模式: 没有参数名:你可以调用函数来输入和输出数据框。引用“当前”组。
数据导入和数据整理较乏味和无聊,很容易从入门到放弃!从数据转换和可视化开始,容易看到成果,保持学习的动力。...此时可以基于变量名,使用select() 函数快速生成一个有用的变量子集。 二 以列之名 2.1 选择对应名称列 使用select()直接选择列名称所对应的列。...#选择任何包含“a”,后跟一个或多个其他字母和“e”的列 msleep %>% select(matches("a....2)创建函数替换 如果输入文件的列名较混乱,根据需求逐步替换。...六 满五赠二 6.1 删除某些列 选择的列前用“-”即可,函数用法与选择一致。
使用arrange()排列行 arrange()函数工作原理和filter()相似,但它不是选择行,而是改变行的顺序。它使用一个数据框和一系列有序的列变量(或者更复杂的表达式)作为输入。...select()允许我们快速通过变量名对数据集取子集。...select()函数中: starts_with("abc")匹配以“abc”开头的名字。...我们可以使用它的变体函数rename()来给变量重新命名: rename(flights, tail_num = tailnum) ## # A tibble: 336,776 x 19 ##...everything()帮助函数联合使用。
library("tidyverse") #查看内置数据集 head(msleep,2) dim(msleep) #[1] 83 11 本示例数据集很小,实际中数据量很大,可以根据使用filter()函数筛选出后续需要的...二 基于数值变量筛选 基于数值,根据 >, >=, 1 Big brown bat 19.7 2 Thick-tailed opposum 19.4 2 筛选sleep_total在16和18... 1 Cheetah 12.1 2 Owl monkey 17 三 基于变量名字筛选...:基础包的 grepl() 函数, stringr 包的 str_detect() 函数 msleep %>% select(name, sleep_total) %>% filter(str_detect
tibble 是一种简单数据框,相对于传统的data.frame做出了一些修改。tibble 包是tidyverse 的核心 R 包,其所提供的简单数据框更易于 在 tidyverse 中使用。...() 函数使用一个向量来创建新 tibble。...> 1 abc 1 3.6 2 xyz 5 10 tibble可以在 tibble 中使用不符合语法的名称作为列名称。...但这样的变量,需要 使用反引号 ` 将它们括起来: > tb <- tibble( + `:)` = "smile", + ` ` = "space", + `...所以,当数据的列名不是很规范时,可以将data.frame换成tibble,同时tibble也可以在 ggplot2 和 dplyr 等其他 R 包中通过使用反引号调用这些变量。
这 5 个函数的工作方式都是相同的。...2、随后的参数使用变量名称(不带引号)描述了在数据框上进行的操作。 3、输出结果是一个新数据框。...filter 查看帮助文档,其他函数也一样。 select - 选择列 通过基于变量名的操作,select() 函数可以让你快速生成一个有用的变量子集。...例如,以下命令选择表中的两列:manufacturer 和 model。...这就是 mutate() 函数的作用。
dplyr为我们提供了group_by()函数,主要使用group_by()对数据进行分组,然后再进行各种计算,通过和其他操作进行连接,发挥更加强大的作用。...Twi'lek 2 ## 8 Wookiee 2 ## 9 Zabrak 2 ## 10 Aleena 1 ## # ... with 28 more rows 和下面这个操作是一样的效果...1 ## 9 Geonosian 1 ## 10 Gungan 3 ## # ... with 28 more rows 除了根据现有的变量进行分组外,还可以根据现有变量的函数进行分组...## [[36]] ## [1] 19 ## ## [[37]] ## [1] 42 51 ## ## [[38]] ## [1] 37 40 80 86 group_vars()查看用于聚合的变量名字...1 feminine 17 ## 2 masculine 66 ## 3 4 联合使用 下面这部分主要介绍group_by和其他函数的联合使用: summarise
") library("stringr") library("readr") library("dplyr") library("data.table") 高效的tibble包 tibble定义了新的数据框...,stringi和stringr可以通过正则表达式更新脏字符串,assertive和assertr包可以在数据分析项目的一开始进行数据完整性的校验。...使用变量名非标准化求值更高效,见R语言 dplyr传递参数_自由 平等~忠诚 奉献-CSDN博客[2]。只是函数名多了个下划线那么简单吗?...正则表达式 R与stringr分别使用grepl()和str_detect()来进行,我比较喜欢基础R的,不知你喜欢安装包还是用基本的。...这里建议不要把数据库密码和API密钥等放在命令中,而要放大.Renviron文件中。dbConnect()函数连接数据库,dbSendQuery()查询,dbFetch()加载到R中。
首先看下包的安装: install.packages("dplyr") 接下来我们看下具体的功能: 1. as_tibble 将大的数据转化为友好展示的格式。...4. filter 匹配对应行的数据。并生成结果。等同于subset函数。...可以直接填入变量名,也可以直接用列号,或者更深一层添加功能函数:start_with(以什么开头的变量),where(什么要求的变量)实例: iris %>%select(starts_with("Petal...16. across 针对某一列进行操作,两个参数:第一个为列名,第二个为操作函数。...最后我们看下更高级的应用实例: ###自定义函数在通道中的应用 var_summary <- function(data, var) { data %>% summarise(n = n(),
今天我们依旧利用 msleep 数据集来探讨 dplyr 的列筛选,并在最后补充几个行筛选的例子。...切片选择 选择某列到某列的数据 msleep %>% + select(name:order) # A tibble: 83 x 4 # name genus...NA # … with 73 more rows 基于模式匹配选择 ❝select() 语法 : select(data , ....) data : Data Frame .... : 变量名或者是...function ❞ 前面的基本都是变量名,下面我们来看几个 function 的例子 选择以 sleep 开头的列 msleep %>% select(name,starts_with('sleep...#10 Roe deer 3 NA NA # … with 73 more rows 类似的 function 还有 函数
如果你想要在载入tidyverse包后仍然使用这些函数,你需要使用函数的全名stats::filter()和stats::lag()进行调用。...,只含TRUE和FALSE fctr代表因子,R用它来代表含固定可能值的分类变量 date代表日期 dplyr基础 这部分我们学习5个关键的dplyr函数,它可以让我们解决遇到的大部分数据操作问题:...() 这些函数都可以通过group_by()衔接起来,该函数改变上述每个函数的作用域,从操作整个数据集到按组与组操作。...这六个函数提供了数据操作语言的动词。...所有的动词工作都非常相似: 第一个参数都是数据框 随后的参数描述了使用变量名(不加引号)对数据框做什么 结果是一个新的数据框 这些属性一起便利地将多个简单步骤串联起来得到一个复杂的操作(结果)。
3.1 加载数据 library(mclust) library(tibble)#属于 tidyverse,以合理的方式组织和显示数据 data(diabetes, package = "mclust"...注:tibble 包引入了一种新的数据结构,关于该包和此新的数据结构的更多内容读者可参见参考书的第 2 章或该包的官方帮助说明[3]。...predict() 函数接受未标记的数据,并将其传递给模型以获得它们的预测类,该函数第一个参数是模型,传递给它的数据由第二个参数 newdata 给出。...Fig 7. mlr 中 predict()和 performance()函数的过程 performance(knnPred, measures = list(mmce, acc)) mmce...小编有话说 本期关于 KNN 算法的内容就先介绍到这里啦,下期将继续介绍交叉验证、如何选择参数 k 来优化模型以及使用 R 语言里的 knn 或 kknn 函数实现 k 近邻分类和有权重的 k 近邻分类等内容
感觉purrr 包的函数非常像py 中的匿名函数相关的函数。 而功能上,其起到的作用更像是简化和丰富了apply 家族函数的调用。...将无名函数写成“~ 表达式”格式, 表达式就是无名函数定义, 用.表示只有一个自变量时的自变量名, 用.x和.y表示只有两个自变量时的自变量名, 用..1、..2、..3这样的名字表示有多个自变量时的自变量名...除此之外,map 还有其他的变种: modify(),输入一个数据自变量和一个函数, 输出与输入数据同类型的结果; map2()可以输入两个数据自变量和一个函数, 将两个自变量相同下标的元素用函数进行变换..., 输出列表; imap()根据一个下标遍历; walk()输入一个数据自变量和一个函数, 不返回任何结果,仅利用输入的函数的副作用; 输入若干个数据自变量和一个函数, 对数据自变量相同下标的元素用函数进行变换...walk walk 函数并不会返回任何结果,有时仅需要遍历一个数据结构调用函数进行一些显示、绘图, 这称为函数的副作用, 不需要返回结果。purrr的walk函数针对这种情形。
领取专属 10元无门槛券
手把手带您无忧上云