我有一个数据框,其中包含每个单独观察的数字ID变量。但是,并非所有数字都是相同的长度。我想拆分原始值,并在没有数字的地方包含缺失值。
示例:
first()
我需要这样看:
subscribe
我尝试过使用
ID Var
1901
501901
但它只考虑包含全长数的变量。
答案 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