首页 > 解决方案 > 如何将正则表达式用于 ifelse tidyverse

问题描述

我的df如下

monday_A    monday_B     tuesday_A    tuesday_B
1                2               4    100
6                7               8    5

我想重新排序,所以它变成

date       Group    quantitive
Monday     A        1
Monday     A        6
Monday     B        2
Monday     B        7
Tuesday    A        4
Tuesday    A        8
Tuesday    B        100
Tuesday    B        5

我做了什么

 df %>% pivot_longer(monday_A:tuesday_B, names_to="tempGroup", values_to="quantitive") 

这做到了

tempGroup    quantitive
monday_A     1
monday_A     6
monday_B     2
monday_B     7
tuesday_A    4
tuesday_A    8
tuesday_B    100
tuesday_B    5

现在我如何分离 tempgroup ?我认为 ifelse 的正则表达式可以通过分离下核来做到这一点

标签: rtidyverse

解决方案


使用names_sep

tidyr::pivot_longer(df, cols = everything(), 
                    names_sep = "_",
                    names_to= c("date", "tempGroup"), 
                    values_to="quantitative")

# A tibble: 8 x 3
#  date    tempGroup quantitative
#  <chr>   <chr>          <int>
#1 monday  A                  1
#2 monday  B                  2
#3 tuesday A                  4
#4 tuesday B                100
#5 monday  A                  6
#6 monday  B                  7
#7 tuesday A                  8
#8 tuesday B                  5

数据

df <- structure(list(monday_A = c(1L, 6L), monday_B = c(2L, 7L), 
tuesday_A = c(4L, 8L), tuesday_B = c(100L, 5L)), 
class = "data.frame", row.names = c(NA, -2L))

推荐阅读