我有一个像这样的巨大数据集:
customer_id customer_math
15251 10001010
10101 11111111
84787 10101010
Run Code Online (Sandbox Code Playgroud)
我想在每个字符处拆分 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
Run Code Online (Sandbox Code Playgroud)
我尝试过但失败了。
你能帮我解决这个问题吗?
非常感谢您的支持!
这是一种可能的解决方案,它对正向前瞻进行正则表达式分割(?=.),以在每个字符之前生成分割。
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
Run Code Online (Sandbox Code Playgroud)
数据:
df <- data.frame(customer_id=c(15251, 10101, 84787),
customer_math=c(10001010, 11111111, 10101010))
Run Code Online (Sandbox Code Playgroud)
编辑:
正如@Sotos 所指出的,使用strsplit空""字符串作为分割字符也可以。