首页 > 解决方案 > R根据数字变化分离列

问题描述

使用 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

标签: rregex

解决方案


根据显示的图像,我们可以通过在from 'q'separate之前获取子字符串来创建分组列,并使用将 long 更改为 'wide'_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))

推荐阅读