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)
我们可以使用read.fwf从base 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)