我一直在研究一种使用 R 从大型 csv 数据集中有效提取信息的方法。许多人似乎推荐使用 ff 包。我成功地读取了数据集,但现在在尝试对其进行子集化时遇到了问题。
最大的数据集包含超过 650,000 行和 1005 列。并非所有列都包含相同的数据类型。作为一个数据框,结构看起来像这样:
'data.frame': 5 obs. of 1005 variables:
$ SAMPLING_EVENT_ID : Factor w/ 5 levels "S6230404","S6252242",..: 2 1 3 4 5
$ LATITUDE : num 24.4 24.5 24.5 24.5 24.5
$ LONGITUDE : num -81.9 -81.9 -82 -82 -82
$ YEAR : int 2010 2010 2010 2010 2010
$ MONTH : int 4 3 10 10 10
$ DAY : int 97 88 299 298 300
$ TIME : num 9 10 10 11.58 9.58
$ COUNTRY : Factor w/ 1 level "United_States": 1 1 1 1 1
$ STATE_PROVINCE : Factor w/ 1 level "Florida": 1 1 1 1 1
$ COUNT_TYPE : Factor w/ 2 levels "P21","P22": 2 2 1 1 1
$ EFFORT_HRS : num 6 2 7 6 3.5
$ EFFORT_DISTANCE_KM : num 48.28 8.05 0 0 0
$ EFFORT_AREA_HA : int 0 0 0 0 0
$ OBSERVER_ID : Factor w/ 3 levels "obs132426","obs58643",..: 3 2 1 1 1
$ NUMBER_OBSERVERS : Factor w/ 2 levels "?","1": 2 1 2 2 2
$ Zenaida_macroura : int 0 0 1 0 0
所有其他变量都类似于最后一个变量,即各种鸟类。
这是我用来“成功:读取 csv:
B2010 <- read.table.ffdf (x = NULL, “filePath&Name", nrows = -1, first.rows = 50000, next.rows = 50000)
为了了解 ffdf 输出,我输入了诸如 dim(B2010)、str(B2010)、ls(B2010) 等命令行。 dim(B2010) 产生了适当的行数,但只有一列(每条记录一个字符串逗号分隔的值),并且 ls(B2010) 输出“[1] "physical" "row.names" "virtual" 而不是通常的变量列表。
我不确定如何处理这种类型的输出以便能够提取 STATE_PROVINCE == “California”?我如何告诉 B2010 变量是什么?我想我需要以不同的方式看待这个问题,但需要你的帮助才能弄清楚。
我的最终目标是对一堆 csv 数据集进行子集化(因为我每年都有一个)并将结果重新组合在一起作为数据框进行各种分析。
谢谢,乔