将 df 整数列拆分为 R 中的单个数字

Vin*_*aul 3 r strsplit dataframe tidyverse

我有一个 df,其中一个变量是整数。我想将此列拆分为单独的数字。看我下面的例子

Group Number
A     456
B     3
C     18
Run Code Online (Sandbox Code Playgroud)

Group Number Digit1 Digit2 Digit3
A     456    4      5      6
B     3      3      NA     NA
C     18     1      8      NA
Run Code Online (Sandbox Code Playgroud)

akr*_*run 6

我们可以使用read.fwfbase R. 在“数字”列 ( ) 中查找max字符 ( nchar) 的数量mx。转换为character( as.character)后读取“数字”列,通过rep将 1 与 1 连接mx并将输出分配给数据中的新“数字”列,将“宽度”指定为 1

mx <- max(nchar(df1$Number))
df1[paste0("Digit", seq_len(mx))] <- read.fwf(textConnection(
             as.character(df1$Number)), widths = rep(1, mx))
Run Code Online (Sandbox Code Playgroud)

-输出

df1
#  Group Number Digit1 Digit2 Digit3
#1     A    456      4      5      6
#2     B      3      3     NA     NA
#3     C     18      1      8     NA
Run Code Online (Sandbox Code Playgroud)

数据

df1 <- structure(list(Group = c("A", "B", "C"), Number = c(456L, 3L, 
18L)), class = "data.frame", row.names = c(NA, -3L))
Run Code Online (Sandbox Code Playgroud)