从R中的csv文件读取选择性数据

时间:2018-10-14 15:09:51

标签: r

我总共有1,584,823条记录,其中有157米(数据ID)。我的数据集有三列,如下所示。

 localminute,dataid,meter_value
    2015-10-01 05:00:10,739,88858
    2015-10-01 05:00:13,8890,197164
    2015-10-01 05:00:20,6910,179118
    2015-10-01 05:00:22,3635,151318
    2015-10-01 05:00:22,1507,390354
    2015-10-01 05:00:29,5810,97506
    2015-10-01 05:01:00,484,99298
    2015-10-01 05:01:18,6910,179118

我应该如何读取和过滤R中特定dataid的meter_value?假设我要读取和导出dataID = 739的数据,像在excel中进行过滤一样,应该如何应用read.csv和write.csv来过滤dataID = 739的所有meter_value。由于数据量大,我无法在Excel中进行过滤。

2 个答案:

答案 0 :(得分:0)

您应该能够将整个文件读入R,然后在R中进行过滤:

df <- read.csv(file="path/to/file.txt")
df_sub <- df[df$dataid == 739, ] # or subset(df, dataid == 739)
write.csv(df_sub, file="path/to/file_out.txt")

将整个文件读入内存没有任何问题,只要它可以合理容纳即可。仅几列的150万行不应超过几MB RAM。

这里的问题是R对于处理加载到其中的数据非常强大,但是read.csv对于复杂的过滤却没有多大作用。

答案 1 :(得分:0)

内置的R函数“子集”用于此目的:

# replace with actual path to actual filename
data <- read.csv('data.csv')

# subset the values
sub_data <- subset(data, dataid == 739)

# write out the data
write.csv(sub_data, 'subset_filename.csv', row.names = F)