在R中分离并绑定数据

时间:2014-08-08 16:03:42

标签: r

我的数据框大约有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),])))
}

效果很好,但速度太慢了!任何人都可以帮助我加快速度吗?也许使用应用函数或其他东西。

1 个答案:

答案 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,这将是快速而简单的。