dplyr包 mutate 和 transmute 函数

本文介绍了R语言中dplyr包的mutate和transmute函数的用法。mutate用于在数据框中增加新变量,同时可以删除原有变量;transmute则只保留新生成的变量,删除其他所有原始变量。通过实例展示了如何利用这两个函数进行数据操作,包括生成逻辑值、数值型变量以及如何指定保留特定变量。

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

<think>我们已知用户想要了解dplyrmutate函数的使用方法示例。根据提供的引用资料,我们可以总结如下:引用[1]提到:mutate函数用于生成新的数据列并添加到数据框中。引用[2]提到:mutate_at函数用于修改数据列(但用户问的是mutate,所以我们会以mutate为主)。引用[3][4]都展示了mutate函数的常见用法:通过现有列进行计算生成新列,例如将两列相除得到新列。因此,回答将围绕mutate函数的基本用法、语法、常见操作示例代码展开。注意:由于用户要求示例,我们将提供具体的代码示例。同时,为了符合用户要求,我们将使用中文回答,并且确保LaTeX公式格式正确(但在这个问题中,可能不涉及数学公式,除非用户的问题需要,但用户问题主要是关于mutate函数使用,所以可能不需要公式,但我们仍要确保任何行内代码或数学表达式使用$...$,如果出现的话)。另外,根据用户上一次的问题,我们之前回答的是关于快速排序,现在用户转向了R语言的mutate函数,所以我们需要重新组织回答。我们按照以下结构回答:1.介绍mutate函数2.基本语法3.使用示例(多个)4.注意事项(如果有)5.生成相关问题注意引用标识:在回答中若引用到提供的资料,则需在末尾添加引用标识。但由于我们并没有直接引用原文,而是综合了引用的内容,我们可以将引用[1]、[3]、[4]作为我们介绍mutate函数的基础,但注意不要直接复制原文,而是用自己的话表述,并在最后列出参考引用(在回答末尾添加引用标识)。由于用户要求尽可能多参考上一次问题回答,但上一次问题与本次无关,所以我们以本次需求为准。下面开始组织回答:</think> ### R语言dplyrmutate函数的使用方法与示例 `mutate()`函数是`dplyr`中用于**创建新列或修改现有列**的核心函数,它会返回一个新的数据框,而不会修改原始数据。以下是详细的使用方法: #### 基本语法 ```r mutate(.data, <新列名称> = <表达式>, ...) ``` - `.data`:数据框对象 - `<新列名称>`:新列的名称 - `<表达式>`:基于现有列的计算表达式 --- ### 实用示例 假设有销售数据`sales_data`: ```r library(dplyr) sales_data <- tibble( product = c("A", "B", "C"), sales = c(1200, 800, 1500), quantity = c(40, 20, 30) ) ``` #### 1. 基础计算:创建平均单价列 ```r sales_data %>% mutate(avg_price = sales / quantity) # 结果: # product sales quantity avg_price # <chr> <dbl> <dbl> <dbl> # 1 A 1200 40 30 # 2 B 800 20 40 # 3 C 1500 30 50 ``` #### 2. 多列操作:同时创建折扣价标识列 ```r sales_data %>% mutate( discount_price = sales * 0.9, high_sales = ifelse(sales > 1000, "Yes", "No") ) # 结果新增两列: # discount_price high_sales # <dbl> <chr> # 1 1080 Yes # 2 720 No # 3 1350 Yes ``` #### 3. 条件判断:创建销售等级 ```r sales_data %>% mutate( sales_level = case_when( sales > 1300 ~ "优", sales > 900 ~ "良", TRUE ~ "中" ) ) ``` #### 4. 跨列计算:行级运算 ```r # 计算每行的销售均值 sales_data %>% mutate(row_avg = (sales + quantity) / 2) ``` --- ### 注意事项 1. 使用前需加载dplyr:`library(dplyr)` 2. 管道操作符`%>%`可串联操作(建议配合使用) 3. 新列会添加到最右侧,保留所有原始列 4. 若列名已存在则覆盖(使用`transmute()`可只保留新列) > 示例参考:引用[1][^1], 引用[3][^3], 引用[4][^4]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值