首页 > 解决方案 > Strsplit 在每个字符处拆分字符串

问题描述

我有一个像这样的巨大数据集:

customer_id     customer_math
  15251           10001010
  10101           11111111
  84787           10101010

我想在每个字符处拆分 customer_math 以接收这样的 df:

customer_id     2012   2013   2014   2015  2016  2017 2018 2019
  15251           1      0     0       0    1     0     1    0
  10101           1      1     1       1    1     1     1    1   
  84787           1      0     1       0    1     0     1    0

我试过但失败了。

你能帮我解决这个问题吗?

非常感谢您的支持!

标签: rstrsplit

解决方案


这是一种可能的解决方案,它对正前瞻(?=.)进行正则表达式拆分,以在每个字符之前生成拆分。

out <- strsplit(as.character(df$customer_math), "(?=.)", perl=TRUE)
data.frame(df, do.call(rbind, out))

    customer_id customer_math X1 X2 X3 X4 X5 X6 X7 X8
1   15251       10001010      1  0  0  0  1  0  1  0
2   10101       11111111      1  1  1  1  1  1  1  1
3   84787       10101010      1  0  1  0  1  0  1  0

数据:

df <- data.frame(customer_id=c(15251, 10101, 84787),
                 customer_math=c(10001010, 11111111, 10101010))

编辑:

正如@Sotos 所指出的,使用strsplit""字符串作为拆分字符也可以。


推荐阅读