当前位置: 首页 > 工具软件 > transmute > 使用案例 >

dplyr包 mutate 和 transmute 函数

厍兴腾
2023-12-01

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删除列; 后者保留同名的列,删除其他列,也可以指定变量保留对应的列。

 类似资料: