mutate()
函数增加新变量并保留原变量;transmute()
函数增加新变量并删除原变量,新变量覆盖原来重名变量。也可以设置变量值为NULL删除变量。
mutate 函数
# 定义测试数据框
data <- data.frame(x1 = 1:5,
x2 = letters[1:5],
x3 = 3)
# 显示内容 5行3列
> data
x1 x2 x3
1 1 a 3
2 2 b 3
3 3 c 3
4 4 d 3
5 5 e 3
增加x4列,根据x1 、x2生成逻辑值 x4,我们需要指定逻辑条件:
# generate x4
data %>% mutate(x4 = (x1 == 1 | x2 == "b"))
# result
x1 x2 x3 x4
1 1 a 3 TRUE
2 2 b 3 TRUE
3 3 c 3 FALSE
4 4 d 3 FALSE
5 5 e 3 FALSE
# 通过设置x3=NULL删除 x3
data %>% mutate(x4 = (x1 == 1 | x2 == "b"), x3 = NULL)
也可以生成数值类型反应逻辑结果。只需要简单给条件乘以1:
data %>% mutate(x4 = (x1 == 1 | x2 == "b") * 1)
# result
x1 x2 x3 x4
1 1 a 3 1
2 2 b 3 1
3 3 c 3 0
4 4 d 3 0
5 5 e 3 0
transmute()
函数
接着上面的测试数据
data <- data %>% mutate(x4 = (x1 == 1 | x2 == "b") * 1)
data %>% transmute(x3 = x1 + x4, .keep=c("x1","x2"))
# result
> data %>% transmute(x3 = x1 + x4)
x3
1 2
2 3
3 3
4 4
5 5
# 一次处理多个,并保留其他变量
data %>% transmute(x1=x1*2, x3 = x1 + x4, x4)
# result
x1 x3 x4
1 2 3 1
2 4 5 1
3 6 6 0
4 8 8 0
5 10 10 0
总结
通过示例对比mutate 和 transmute 函数,前者增加新列,也可以给列设置值NULL删除列; 后者保留同名的列,删除其他列,也可以指定变量保留对应的列。
本文参考链接:https://blog.csdn.net/neweastsun/article/details/116903770