我是R的新手,正在使用read.csv
导入数据集。我正在使用的数据集可在此处获取:http://archive.ics.uci.edu/ml/machine-learning-databases/00235/。我不想导入整个数据集然后将我需要的内容进行子集化,而是只想从一开始就导入我需要的部分。数据集中的第一列标题为“日期”,我只需要与2007年4月第一周相对应的数据。要读取整个数据集,我可以执行以下操作:
initial <- read.table("household_power_consumption.txt", sep = ";", nrows = 100)
classes <- sapply(initial, class)
powerconsumption <- read.table(file = "household_power_consumption.txt",colClasses = classes, sep = ";", header = TRUE, col.names = c("Date", "Time", "Global_active_power", "Global_reactive_power", "Voltage", "Global_intensity", "Sub_metering_1", "Sub_metering_2", "Sub_metering_3"))
但是,我想知道是否有?read.table
的解决方法允许仅导入数据集的一部分,如下所示:
powerconsumption <- read.table(file = "household_power_consumption.txt",colClasses = classes, sep = ";", header = TRUE, col.names = c("Date", "Time", "Global_active_power", "Global_reactive_power", "Voltage", "Global_intensity", "Sub_metering_1", "Sub_metering_2", "Sub_metering_3"), col = (Date==c("1/2/2007", "2/7/2007")))
请注意添加, col = (Date==c("1/2/2007", "2/7/2007")))
。
答案 0 :(得分:0)
read.table
函数执行相当多的处理,并且可能会使用大文件陷入困境,除非您已经演示了使用colClasses。因此,如果您只想要一个小的子集,那么从&#34;未消化的&#34;中选择几行可能对您有利。版。你可以用两种方式做到这一点。禁食可能是用sed或awk进行外部处理。这里&#39; sa link doing data comparison in awk.但是,我会告诉你如何用R做这件事。我将在2007年4月的第一周带你去naturla语言请求并假设你的日期不是POSIX标准格式,而是n / n / nnnn格式,并且没有前导零。
Lines <- readLines("household_power_consumption.txt")
subL <- grep("^[1234567]/5/2007", substr(Lines, 1,8) # a numeric vector
inSub <- read.table(text=Lines[subL,,], header = TRUE, col.names = c("Date", "Time", "Global_active_power", "Global_reactive_power", "Voltage", "Global_intensity", "Sub_metering_1", "Sub_metering_2", "Sub_metering_3"))
我担心我不愿意下载20MB的文件来回答这个问题,因此您可以发布更好的说明或head()
来自您的首字母&#39;数据对象