我对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")))
。
发布于 2014-06-06 22:20:24
read.table
函数进行了相当多的处理,并且可能会陷入大文件的困境,除非您已经使用了colClasses。因此,如果您只需要一个小子集,从“未消化”版本中选择几行可能对您有利。你可以用两种方式来做。禁食可能是用sed或awk进行外部处理。不过,这里有一个link doing data comparison in awk.,我将向您展示如何使用R。我将为您提供“2007年4月的第一周”的自然语言请求,并假设您的约会日期不是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"))
恐怕我不愿意下载一个20 to的文件来回答这个问题,所以您可以从您的“初始”数据对象中发布更好的描述或head()
。
https://stackoverflow.com/questions/24090768
复制相似问题