首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >rename_with,但谓词基于其他变量中的值

rename_with,但谓词基于其他变量中的值
EN

Stack Overflow用户
提问于 2020-11-06 06:20:54
回答 1查看 58关注 0票数 2

有没有一种方法可以rename_with,但是谓词函数不是基于列名,而是基于另一个变量中的值?

假设我有一个如下数据集:

代码语言:javascript
运行
复制
data <- tibble(home_team = c("SF", "KC", "JAX", "WAS", "BUF"),
               away_team = c("GB", "CAR", "HOU", "NYG", "SEA"),
               home_total = c(21, 25, 30, 22, 23.5),
               home_plays = c(65, 64, 63, 57, 60),
               away_total = c(30, 22, 25, 22, 25),
               away_plays = c(56, 62, 66, 59, 62))

我试着让它看起来像这样:

代码语言:javascript
运行
复制
finalized_data <- tibble(team = c("SF", "KC", "JAX", "WAS", "BUF", "GB", "CAR", "HOU", "NYG", "SEA"),
                         total = c(21, 25, 30, 22, 23.5, 30, 22, 25, 22, 25),
                         plays = c(65, 64, 63, 57, 60, 56, 62, 66, 59, 62)) 

目前我知道的最好的方法是使用一个变函数,当有很多变量时它会变得很长,而且必须有一种更干净的方法来做,因为它本质上是我基于数据中的一个变量进行的重命名。

代码语言:javascript
运行
复制
current_way <- data %>% 
  pivot_longer(c(home_team, away_team), names_to = "team_type", values_to = "team") %>%
  mutate(total = ifelse(str_detect(team_type, "home_team"), home_total, away_total),
         plays = ifelse(str_detect(team_type, "home_team"), home_plays, away_plays)) %>%
  select(team, total, plays)

有什么想法吗,或者有没有办法在我遗漏的pivot函数中做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-06 06:28:26

下面是pivot_longer的一个选项,它使用列名模式拆分成多个列

代码语言:javascript
运行
复制
library(dplyr)
library(tidyr)
data %>% 
  pivot_longer(cols = everything(), names_to = c("grp", ".value"), 
           names_sep = "_") %>%
   arrange(desc(grp)) %>%
   select(-grp)    

-output

代码语言:javascript
运行
复制
# A tibble: 10 x 3
#   team  total plays
#   <chr> <dbl> <dbl>
# 1 SF     21      65
# 2 KC     25      64
# 3 JAX    30      63
# 4 WAS    22      57
# 5 BUF    23.5    60
# 6 GB     30      56
# 7 CAR    22      62
# 8 HOU    25      66
# 9 NYG    22      59
#10 SEA    25      62
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64706150

复制
相关文章

相似问题

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