mutate (): 计算并向数据表中添加新变量。它保留了现有的变量。
transmute (): 计算新列,但删除现有变量。
我们还将提供mutate()和transmute()的三种变体,以便同时修改多个列:
mutate_all () / transmute_all (): 对数据框中的每一列应用一个函数
mutate_at () / transmute_at (): 将函数应用于用字符向量选定的特定列
mutate_if () / transmute_if (): 将一个函数应用于返回TRUE的函数所选择的列。
mutate: 通过保留现有变量来添加新变量
添加新列 (sepal_by_petal_*):
transmute: 通过删除现有变量来创建新变量
添加新列 (sepal_by_petal_*),并删除现有列:
一次修改多个列
我们首先创建一个演示数据集my_data2,它只包含数字列。为此,我们将删除列物种
函数 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.
转换所有列
注意,点“.” 表示所有任意变量。
如果.funs有多个名称或多个输入,函数名将被附加到列名中:
注意,输出变量名现在包含了函数名。
转换特定的列
mutate_at (): 转换按名称选择的特定列:
mutate_if (): transform specific columns selected by a predicate function.
mutate_if() 在将变量从一种类型转换为另一种类型时特别有用。
所有数值变量四舍五入:
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.
已知数据集a1,有N行变量新建数据集a2,b为列名
a1=data.frame(b=c('a','b','c','d','e'……))输入N个字符型变量
或者a1=data.frame(b=c(1,2,3,4,5……))输入N个数值型变量
将数据集a1和a2合并为数据集a3
a3=data.frame(a1,a2)。
注:数据集a1和a2的行数相等,都为N时才能合并。如果不相等,可以用无效值补齐:
假设a2只有5行,输入代码a2[6:N,]=NA,就可以补齐为N行,与a1进行合并。
当然可以,R语言也有循环控制语句for。但是,既然使用了R语言,就应当尽量用向量的方式来解决问题。
向量化是R语言的一大特色,能够大大加快R语言的执行效率。