Skip to main content
 首页 » 编程设计

R语言dplyr包 mutate 和 transmute 函数

2022年07月19日152yxwkf

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
阅读延展