R 对多个列使用colsplit函数
我有一个矩阵500行,1000列。每个列之间有4个元素逗号,我需要删除逗号 数据是这样的R 对多个列使用colsplit函数,r,R,我有一个矩阵500行,1000列。每个列之间有4个元素逗号,我需要删除逗号 数据是这样的 1 2 3 4 ... 1000 1 12,1,20 14,15,12 10,10,20 1,0,10 ... 1,5,3 2 12,1,20 14,15,12 10,10,20 1,0,10 ... 1,5,3 3 12,1,20 14,15,12 10,10,20 1,0,1
1 2 3 4 ... 1000
1 12,1,20 14,15,12 10,10,20 1,0,10 ... 1,5,3
2 12,1,20 14,15,12 10,10,20 1,0,10 ... 1,5,3
3 12,1,20 14,15,12 10,10,20 1,0,10 ... 1,5,3
.
.
500 12,1,20 14,15,12 10,10,20 1,0,10 ... 1,5,3
我的代码是
mat=matrix(data=NA, nrow=257, ncol=3)
n=1000
k=500
for(i in 1:n){
mat[i]<-colsplit(as.character(data[,i]), "," , c("a","b","c"))
}
mat=矩阵(数据=NA,nrow=257,ncol=3)
n=1000
k=500
for(1:n中的i){
mat[i]如果要基于,
作为分隔符创建新列
library(data.table)
library(splitstackshape)
df1 <- cSplit(df, 1:ncol(df), sep=",")[,lapply(.SD, as.numeric)]
df1
# X1_1 X1_2 X1_3 X2_1 X2_2 X2_3 X3_1 X3_2 X3_3 X4_1 X4_2 X4_3
#1: 12 1 20 14 15 12 10 10 20 1 0 10
#2: 12 1 20 14 15 12 10 10 20 1 0 10
#3: 12 1 20 14 15 12 10 10 20 1 0 10
数据
df请提供一个可复制的数据的小例子,以及预期的输出。不需要所有Github的东西——包在CRAN上。另外,如果数据是矩形的(听起来像是这样)cSplit\u f
更快。+1尽管:-)@Ananda感谢cSplit\u f
。这对我来说是新的。
cSplit_f(df, 1:ncol(df), sep=",")[,lapply(.SD, as.numeric)]
str(df1)
# Classes ‘data.table’ and 'data.frame': 3 obs. of 12 variables:
# $ X1_1: num 12 12 12
# $ X1_2: num 1 1 1
# $ X1_3: num 20 20 20
# $ X2_1: num 14 14 14
# $ X2_2: num 15 15 15
# $ X2_3: num 12 12 12
# $ X3_1: num 10 10 10
# $ X3_2: num 10 10 10
# $ X3_3: num 20 20 20
# $ X4_1: num 1 1 1
# $ X4_2: num 0 0 0
# $ X4_3: num 10 10 10
df <- structure(list(X1 = c("12,1,20", "12,1,20", "12,1,20"), X2 = c("14,15,12",
"14,15,12", "14,15,12"), X3 = c("10,10,20", "10,10,20", "10,10,20"
), X4 = c("1,0,10", "1,0,10", "1,0,10")), .Names = c("X1", "X2",
"X3", "X4"), class = "data.frame", row.names = c("1", "2", "3"
))