首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用dplyr对多列执行多个操作

使用dplyr对多列执行多个操作
EN

Stack Overflow用户
提问于 2022-11-09 00:38:17
回答 1查看 40关注 0票数 2

我是在R工作,并有一个与各种系列的数据。我需要对大多数这些列执行以下两个操作:

  1. max(0,x_t -max(x_{t -1 }),x_{t-2},x_{t-3},
  2. -1+ x_t / max(x_{t-1},x_{t-2},x_{t-3},x_{t-4})

我尝试了一个列的解决方案

代码语言:javascript
复制
df %>% mutate( pmax(0,x - pmax(lag(x), lag(x,2), lag(x,3), lag(x,4))) )

但是,我想可以使用dplyr的dplyr跨和purrr语法对所有列和这两个操作执行此操作。对怎么做有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-09 00:58:48

您可以在dplyr包中使用across()函数。

代码语言:javascript
复制
#Define some test data
df <- data.frame( x= round(runif(100, 10, 15)), y=round(rnorm(100, 10, 5), 1))

#define the function to apply on each column
mypmax <- function(i){
    pmax(0,i - pmax(lag(i), lag(i,2), lag(i,3), lag(i,4)))
}

#apply the function on columns 1 & 2.
#create new column names to store the results.
df %>% mutate(across(c(1,2), mypmax, .names = "new_{.col}" ) )

         x    y new_x new_y
1   12  7.3    NA    NA
2   14 10.9    NA    NA
3   10 17.8    NA    NA
4   14 12.5    NA    NA
5   15 10.0     1   0.0
6   14 11.6     0   0.0
7   10  7.9     0   0.0
8   12  8.6     0   0.0
9   11 11.3     0   0.0
10  11  4.7     0   0.0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74368709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档