R根据数字变化分开列

时间:2019-12-29 22:31:08

标签: r regex

使用R的独立功能,我试图在每次数字增加时将一列分成新的列。 列设置如下: Q1_W1 Q1_W2 Q2_W1 Q2_W2 Q3_W1 依此类推,直到以Q9结尾。 希望将在Q1,Q2,Q3等上拆分的组分开。

到目前为止,我只尝试填写Q1。

nn3=nalhx%>%
 separate(q, into =c("Q1","Q2","Q3","Q4","Q5","Q6","Q7","Q8","Q9"), sep = "(^q+[0-9])")

所需的输出:  https://i.stack.imgur.com/u0r4Z.png

1 个答案:

答案 0 :(得分:2)

根据显示的图像,我们可以通过从'q'中获取separate之前的子字符串,而不是_来创建分组列,并使用pivot_wider来更改长整型。到“宽”

library(dplyr)
library(stringr)
library(tidyr)
nalhx %>% 
   group_by(grp = str_remove(q, '_.*')) %>%    
   mutate(rn = row_number()) %>% 
   ungroup %>%
   pivot_wider(names_from = grp, values_from = q, 
           values_fill = list(q = '')) %>%
   select(-rn)
# A tibble: 2 x 3
#  Q1    Q2    Q3   
#  <chr> <chr> <chr>
#1 Q1_W1 Q2_W1 Q3_W1
#2 Q1_W2 Q2_W2 ""   

数据

nalhx <- structure(list(q = c("Q1_W1", "Q1_W2", "Q2_W1", "Q2_W2", "Q3_W1"
)), class = "data.frame", row.names = c(NA, -5L))