计算并向R中的数据框添加新变量

本教程描述了R中如何计算和添加新的变量到一个数据框.你将学习dplyr R包以下R函数:

mutate(): 计算并向数据表中添加新变量。它保留了现有的变量。

transmute(): 计算新列,但删除现有变量。

我们还将提供mutate()和transmute()的三种变体,以便同时修改多个列:

mutate_all() / transmute_all(): 对数据框中的每一列应用一个函数

mutate_at() / transmute_at(): 将函数应用于用字符向量选定的特定列

mutate_if() / transmute_if(): 将一个函数应用于返回TRUE的函数所选择的列。

library(tidyverse)

my_data <- as_tibble(iris)

my_data

mutate: 通过保留现有变量来添加新变量

添加新列 (sepal_by_petal_*):

my_data %>%

  mutate(sepal_by_petal_l = Sepal.Length/Petal.Length)

transmute: 通过删除现有变量来创建新变量

添加新列 (sepal_by_petal_*),并删除现有列:

my_data %>%  transmute(sepal_by_petal_l = Sepal.Length/Petal.Length,   sepal_by_petal_w = Sepal.Width/Petal.Width)

一次修改多个列

我们首先创建一个演示数据集my_data2,它只包含数字列。为此,我们将删除列物种

my_data2 <- my_data %>%  select(-Species)

函数 mutate_all() / transmute_all(),  mutate_at() / transmute_at() 和mutate_if() / transmute_if() 可用于一次修改多个列。

函数简要形式如下所示:

# Mutate variants

mutate_all(.tbl, .funs,...)

mutate_if(.tbl, .predicate, .funs,...)

mutate_at(.tbl, .vars, .funs,...)

# Transmute variants

transmute_all(.tbl, .funs,...)

transmute_if(.tbl, .predicate, .funs,...)

transmute_at(.tbl, .vars, .funs,...)

.tbl: tbl 数据框

.funs: List of function calls generated by funs(), or a character vector of function names, or simply a function.由funs()、函数名的字符向量或简单的函数生成的函数调用列表。

…: funs中函数调用的附加参数。

.predicate: A predicate function to be applied to the columns or a logical vector. The variables for which .predicate is or returns TRUE are selected.

转换所有列

#Divide all columns value by 2.54:

my_data2 %>%  mutate_all(funs(./2.54))

注意,点“.” 表示所有任意变量。

如果.funs有多个名称或多个输入,函数名将被附加到列名中:

my_data2 %>%  mutate_all(funs(cm = ./2.54))

注意,输出变量名现在包含了函数名。

转换特定的列


mutate_at(): 转换按名称选择的特定列:

my_data2 %>%  mutate_at( c("Sepal.Length","Petal.Width"), funs(cm = ./2.54)    )

mutate_if(): transform specific columns selected by a predicate function.

mutate_if() 在将变量从一种类型转换为另一种类型时特别有用。

my_data %>% mutate_if(is.factor, as.character)

所有数值变量四舍五入:

my_data %>% mutate_if(is.numeric, round, digits =0)

Summary

本文描述了如何使用dplyr函数向数据框架中添加新的变量列:mutate()、transmute()

mutate(iris, sepal = 2*Sepal.Length): Computes and appends new variable(s).

transmute(iris, sepal = 2*Sepal.Length): Makes new variable(s) and drops existing ones.

你可能感兴趣的:(计算并向R中的数据框添加新变量)