我有一个包含数百个CSV文件的文件夹,每个文件都包含特定邮政编码的数据。
每个CSV文件包含两列和数千行。描述符在A列中,值在B列中。
我需要从每个文件中提取两条信息,并使用[A列,第2行](这是邮政编码)和[B栏,第1585行]中的值创建新的表或数据框(这是收入中位数)。
最终结果应该是一个包含两列的表/数据框:一列用于邮政编码,另一列用于中等收入。
任何帮助或建议都将不胜感激。
答案 0 :(得分:0)
您可以使用list.files
函数获取所有文件的目录,然后在read.csv
循环中使用rbind
和for
创建一个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])
}
感谢所有帮助我解决这个问题的人,尤其是南希。