问题描述
我目前正在学习如何将excel导入数据框。我已经研究过,但到目前为止找不到答案。
可追溯到2013年的每个月都有数据行,每个月大约有150行(按位置)。每个地点每个月都有一组数据,例如人数,以及一些其他相关的数字和字符数据。随着文件的开发和方法的改变,某些列为空白,但其余部分为数字。例如,Number_of_PPL仅从2019年开始才记录,因此以前的值为空白。
我知道我可以将空格更改为零,但是我不希望将其与0 People和无数据混淆。
使用以下内容导入时:
df <- data.frame(read_excel("UPLOAD_DATA.xlsx",sheet="ALL DATA",na=""))
str(df)
给出:
$ Number_of_PPL:logi不适用不适用不适用不适用...
带空白的列被视为逻辑而不是数字。我尝试转换为数字,但是却得到了0,1或NA值,而不是数据的真实值。我不想忽略带有NA的行,因为它们包含该位置的其他相关数据。
是否可以将这些列导入为数字,以便我仍然可以在图表中表示它们并在以后进行计算而无需插入零?
编辑/更新
这是从excel上传的数据的示例:
从数字数据到空白的转换发生在Number_of_PPL列的第12,520行。到目前为止,使用Read_xl时,我发现它会猜测这是逻辑数据。如果我在前一行输入数字,即。第1行,read_xl会单独将其视为数字列。
col_names的建议可以很好地强制将其强制为数字形式,但是就效率和未来数据集而言,我更希望在假设采用哪种方法之前,是否有办法让read_xl在数据中往下看。数据合乎逻辑吗?
很明显,它能够接受空白行,分配NA并仍将其称为数字,但是它似乎与数据列中数字的位置有一定关系,在这种情况下,它们似乎相差甚远。
解决方法
增加guess_max
的值可以解决此问题。
df = data.frame(read_excel("UPLOAD_DATA.xlsx",sheet="ALL DATA",na="",guess_max=Inf))
@benbolker的信用额