我有一个包含1000行的列。每行有5000个值,全部用分号分隔。我想将此列转换为1000 x 5000维度的矩阵。 我怎么能在R?中做到这一点?
谢谢, 亚伦
答案 0 :(得分:0)
as.numeric(strsplit(A[,1],";"))
如果数据在数据框或数组中
as.numeric(strsplit(A,";"))
如果数据是矢量
答案 1 :(得分:0)
这是一种方法。
my_data <- data.frame(one_column = c("5;6;5;6;7", "6;5;3;2;5"))
my_data
one
1 5;6;5;6;7
2 6;5;3;2;5
# split each row by a semicolon
my_list <- apply(my_data, 1, strsplit, split = ";")
# unlist and turn it into a matrix
my_matrix <- matrix(as.numeric(unlist(my_list)), nrow = nrow(my_data),
ncol =length(my_list[[1]][[1]]), byrow = TRUE)
my_matrix
[,1] [,2] [,3] [,4] [,5]
[1,] 5 6 5 6 7
[2,] 6 5 3 2 5
如果您愿意,可以指定行数和列数。在这里,我假设你确实每行都有5000个值。
答案 2 :(得分:0)
让我们开始创建一个包含1列的数据框示例 分号分隔值:
d <- data.frame(col1 = paste0(runif(1000), ";", runif(1000), ";", runif(1000)), stringsAsFactors = F)
这是数据框的样子:
head(d)
col1
1 0.20093023753725;0.399978927802294;0.404899704502895
2 0.424904063809663;0.0908958145882934;0.340853224741295
3 0.850118306931108;0.518901573261246;0.364027933450416
4 0.0212442732881755;0.760768163017929;0.146710442844778
5 0.0331723166164011;0.153021499980241;0.449281473178416
6 0.733110485365614;0.0544649658259004;0.663546974770725
以下两行代码可以产生您想要的内容:
library(stringr)
t <- str_split(d$col1, ";")
d2 <- do.call(rbind, t)
第一行生成一个列表,其中每个元素都包含拆分值。 第二行将它们以矩阵形式绑定在一起。