【发布时间】:2020-10-21 17:28:18
【问题描述】:
我目前正在学习如何将 excel 导入数据框。我已经研究过,但到目前为止我无法找到答案。
有代表每个月的数据行可以追溯到 2013 年,其中每月大约有 150 行(按位置)。每个地点,每个月都有数组数据,例如人数,以及一些其他相关的数字和字符数据。随着文件的开发和方法的改变,一些列有空白,但该列的其余部分是数字。例如 Number_of_PPL 是从 2019 年开始记录的,所以之前的值是空白的。
我知道我可以将空白更改为零,但我不希望这与 0 People vs no data 混淆。
使用以下方式导入时:
df <- data.frame(read_excel("UPLOAD_DATA.xlsx", sheet="ALL DATA",na=""))
str(df) 给出:
$ Number_of_PPL : logi NA NA NA NA NA NA ...
带有空格的列被视为逻辑而不是数字。我尝试转换为数字,但是这给了我 0,1 或 NA 值,而不是数据的真实值。我不想省略带有 NA 的行,因为它们包含该位置的其他相关数据。
有没有办法将这些列导入为数字,以便我仍然可以在图表中表示它们并在以后进行计算而无需插入零?
数字数据与空白的转换发生在 Number_of_PPL 列的第 12,520 行。到目前为止,在使用 Read_xl 时,我发现它会猜测这是逻辑数据。如果我在前一行输入数字,即。第 1 行,read_xl 会将列视为自己的数字。
col_names 的建议可以完美地强制它为数字,但是就效率和未来的数据集而言,我更愿意在假设之前找出是否有办法让 read_xl 在数据中看得更远数据是否符合逻辑?
显然,它能够获取空白行,分配 NA 并仍将其称为数字,但它似乎与数据列中数字出现的位置有某种关系,在这种情况下,它们似乎远远“下降”
【问题讨论】:
-
参见
col_types参数。 minimal reproducible example 会很有用... -
谢谢。 col_types 效果很好,但是我确实需要为所有 32 列设置类型,这很麻烦。我已经更新了我的帖子,以包含我正在尝试使用的数据的更一般示例。这不是一个最小的可复制示例,但我希望它有所帮助。如果数值数据出现在列中较早的位置(即第 1 行),read_xl 将在没有帮助的情况下将数据识别为数值的更多实验结果
-
尝试增加
guess_max的值 -
@BenBolker 谢谢!通过设置guess_max = Inf,这看起来很完美
-
好的,如果您想在我解决问题之前发布您自己问题的答案,请随意。