如何将不同长度的数字拆分为R中的数字

时间:2016-06-30 17:11:53

标签: r database split

我有一个数据框,其中包含每个单独观察的数字ID变量。但是,并非所有数字都是相同的长度。我想拆分原始值,并在没有数字的地方包含缺失值。

示例:

first()

我需要这样看:

subscribe

我尝试过使用

ID Var              
  1901                 
501901 

但它只考虑包含全长数的变量。

2 个答案:

答案 0 :(得分:2)

这是一个使用基本R函数的方法:

# example data
id <- c(14, 1901, 1237, 990, 501901)

charList <- strsplit(sprintf(paste0("%", max(nchar(id)), ".0f"), id), split="")

# put into data.frame
myData <- data.frame(do.call(rbind, charList))
myData
  X1 X2 X3 X4 X5 X6
1              1  4
2        1  9  0  1
3        1  2  3  7
4           9  9  0
5  5  0  1  9  0  1

正如@ richard-scriven所提到的,这会产生因子变量,这些变量通常仅在特定情况下有用。要执行到整数的转换,您可以执行以下操作:

myData[] <- lapply(myData, function(i) as.integer(as.character(i)))

答案 1 :(得分:0)

library(stringr)
a <- c(1901, 501901)
b <- as.character(a)
d <- str_pad(b, 6, pad = " ")
out <- as.data.frame(do.call(rbind, strsplit(d, "")))
out[out == " "] <- NA