【问题标题】:Unexpected results when merging two vectors into a dataframe将两个向量合并到数据框中时出现意外结果
【发布时间】:2015-12-15 20:54:31
【问题描述】:

我正在从多个 CSV 文件中提取数据并尝试将它们组合成一个数据框。源数据的格式很奇怪,因此我必须从源中的特定位置提取数据,然后将它们以逻辑模式放置在结果数据框中。

我创建了两个长度相等的向量并从我的源文件中提取数据。最终结果是我得到了两个长度为 3 的向量(如预期的那样),但我没有得到一个 3x2 数据框(对 2 个变量进行 3 个观察),而是得到一个 1x6 数据框(对 6 个变量进行 1 个观察) .

令我好奇的是,尽管 RStudio 认为它们都是“3 列表”,但当我在控制台中显示它们时,它们的显示方式却大不相同:

不起作用的源代码:

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

# identify how many data files are present
files = list.files("/foo")

# create vectors long enough to contain all the postal codes and income data
postalCodeData=vector(length=length(files))
medianIncomeData=vector(mode="character", length=length(files))

# loop through all the files, pulling data from rows 2 and 1585.
  for(i in 1:length(files)) {
  x = read.csv(files[i],skip=1,nrows= 1,header=F)
  y = read.csv(files[i], skip = 1584, nrows = 1,header=F)
  postalCodeData[i]=x
  medianIncomeData[i]=y[2]
  }

#create the data frame
Results=data.frame(postalCodeData,medianIncomeData)

#name the columns
names(Results)=c("FSA", "Median Income")

我的数据框最终看起来像这样:

有效工作的源代码:

setwd("/Users/Perry/Downloads/Postal Code Data/")
files = list.files("/Users/Perry/Downloads/Postal Code Data/")
postalCodeData=c("K0A","K0B","K0C")
medianIncomeData=c("10000","20000","30000")

Results=data.frame(postalCodeData,medianIncomeData)
names(Results)=c("FSA", "Median Income")

不幸的是,我无法明确指定值,因为我有数百个文件可以从中提取信息。任何关于如何纠正循环以获得所需结果的建议将不胜感激。

【问题讨论】:

  • 这两个不是向量,它们是列表。请提供一些易于重现的输入数据,例如使用dput
  • 感谢 iled,我支持您的改进。当我注释掉循环并直接为我的 postalCodeData 和 medianIncomeData 指定值时,我得到了预期的结果,因此循环的行为似乎不符合预期。
  • 我想说的是medianIncomeDataPostalCodeData,如第一张图片所示,它们是列表而不是向量,这就是你看到List of 3的原因。

标签: r


【解决方案1】:

“read.csv”的输出是一个数据框,所以,当你存储时

medianIncomeData[i]=y[2]

您正在存储数据框的一列,请使用

medianIncomeData[i]=y[2][1]

相反,只存储您想要的值,对于 x 也是如此

【讨论】:

  • 我在指定时得到相同的结果:`postalCodeData[i]=x[1][1] medianIncomeData[i]=y[2][1]'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多