R - 将来自多个CSV的行组合成数据帧

时间:2015-12-15 16:31:46

标签: r csv

我有一个包含数百个CSV文件的文件夹,每个文件都包含特定邮政编码的数据。

每个CSV文件包含两列和数千行。描述符在A列中,值在B列中。

我需要从每个文件中提取两条信息,并使用[A列,第2行](这是邮政编码)和[B栏,第1585行]中的值创建新的表或数据框(这是收入中位数)。

最终结果应该是一个包含两列的表/数据框:一列用于邮政编码,另一列用于中等收入。

任何帮助或建议都将不胜感激。

3 个答案:

答案 0 :(得分:0)

您可以使用list.files函数获取所有文件的目录,然后在read.csv循环中使用rbindfor创建一个data.frame。< / p>

这样的事情:

direct<-list.files("directory_to_your_files")
df<-NULL
for(i in length(direct)){
  df<-rbind(df,read.csv(direct[i]))
}

答案 1 :(得分:0)

免责声明:这个问题很模糊。下一次,请务必添加一个可重现的示例,我们可以在我们的机器上运行。它将帮助您,回答您问题的人和未来的用户。

您可以尝试以下方式:

files = list.files("~/Directory")

my_df = data.frame(matrix(ncol = 2, nrow = length(files)

for(i in 1:length(files)){
    row1 = read.csv("~/Directory/files[i]",nrows = 1)
    row2 = read.csv("~/Directory/files[i]", skip = 1585, nrows = 1)
    my_df = rbind(my_df, rbind(row1, row2))
}

my_df = my_df[,c("A","B")]
# Note on interpreting indexing syntax: 
  Read this as "my_df is now (=) my_df such that ([) the columns (,) 
  are only A and B (c("A", "B")) "

答案 2 :(得分:0)

所以这里是执行我想要它做的事情的代码。如果有更优雅的解决方案,请随时指出。

# set the working directory to where the data files are stored
setwd("/foo")

# count the files
files = list.files("/foo")

#create an empty dataframe and name the columns

dataMatrix=data.frame(matrix(c(rep(NA,times=2*length(files))),nrow=length(files)))
colnames(dataMatrix)=c("Postal Code", "Median Income")

# create a for loop to get the information in R2/C1 and R1585/C2 of each data file
# Data is R2/C1 is a string, but is interpreted as a number unless specifically declared a string

for(i in 1:length(files)) {
  getData = read.csv(files[i],header=F)
  dataMatrix[i,1]=toString(getData[2,1])
  dataMatrix[i,2]=(getData[1585,2])
}

感谢所有帮助我解决这个问题的人,尤其是南希。