我的数据框大约有81,000行。它们都包含带有以下数据的向量
0193,02394,2093,Alabama,Alabama,23094,23193,24311,24411
我试图获得一张表,其中所有81,000行分为三列,其中包含名称和最后一个数字。每一行都是这样的:
Alabama | Alabama | 24411
到目前为止,我的代码看起来像这样:
pop.dat <- data.frame()
for (i in 1:nrow(pop.data)){
pop.dat <- rbind(pop.dat, t(data.frame(data.frame(strsplit(as.character(pop.data[i,]), ','))[c(7:8, 13),])))
}
效果很好,但速度太慢了!任何人都可以帮助我加快速度吗?也许使用应用函数或其他东西。
答案 0 :(得分:1)
您可以一次在整个列上使用strsplit
,然后绑定行,并选择所需的列,如下所示:
# Create some data
pop.data <- data.frame(col=rep('0193,02394,2093,Alabama,Alabama,23094,23193,24311,24411',3), stringsAsFactors=FALSE)
# Split by comma, then rbind the list.
do.call(rbind, strsplit(pop.data$col,',')) [,c(4,5,9)]
但是,如果您正在从文件中阅读这些内容,请使用read.csv
,这将是快速而简单的。