R - 提取数据集中的特定行并保存到新的数据框中

R - Extract Specific Rows in Dataset And Save Into New Dataframes

我正在寻找 sort/process 一些大数据,然后再将其输入函数。

我有一个很大的日志读数数据集,由许多独特的地址和时间组成。

数据看起来有点像这样:

UNIQUE_ADDRESS1 24/08/2016 13:01
UNIQUE_ADDRESS2 24/08/2016 13:02
UNIQUE_ADDRESS3 24/08/2016 13:05
UNIQUE_ADDRESS1 25/08/2016 00:00
UNIQUE_ADDRESS2 25/08/2016 00:01
UNIQUE_ADDRESS3 25/08/2016 00:12

我最终是 运行 一个函数,它需要由特定唯一地址和特定日期组成的单独数据帧。

数据框看起来像这样,由包含特定唯一地址和特定日期的所有行组成。

dataframe1 <- [UNIQUE_ADDRESS1 24/08/2016 13:01, 
UNIQUE_ADDRESS1 24/08/2016 13:03, 
UNIQUE_ADDRESS1 24/08/2016 13:06, 
UNIQUE_ADDRESS1 24/08/2016 13:08
... etc]

其中将有一个 dataframe2 再次对应于 UNIQUE_ADDRESS1,但所有时间都在 25/08/2016 之内。这将为每个设备完成。

我认为这需要在循环中完成,但我无法正确完成语法。

到目前为止,我正在使用 grep 从大量日志文件中提取每个唯一地址,像这样分别为每个设备创建数据帧:

device1 <- logfile[grep("^UNIQUE_ADDRESS1", logfile[,2]), ]

然后我创建了一个日期数组:

dates <- c("23/09/2016", "24/08/2016", "25/08/2016")

我现在想创建新的数据框来组合每个单独的唯一地址和每个日期。因此,一个数据框中日期为 23/09/2016 的 UNIQUE_ADDRESS1 的所有日志读数,然后是 24/08/2016 的另一个,等等。每个 UNIQUE_ADDRESS.

都相同

我试过使用 grep 和 grepl,但是当我在 if 循环或 ifelse 循环中使用它们时,他们声称我的日期不在我的设备数据帧中(它们肯定是),并且我的任何值试试看,它 returns 无论如何都是假的。

任何人都可以帮助我实现我的目标吗?

谢谢

编辑

目前我正在尝试在 for 循环中执行此操作,其中 "device1" 包含设备 1 等的唯一地址。但是,当我递增 i 它只会保存到相同的数据帧 (device1) 而不是我需要的新数据帧。

for (k in 1:6)

device1 <- device1[grep(dates[i], device1[,4]), ]
device2 <- device2[grep(dates[i], device1[,4]), ]
device3 <- device3[grep(dates[i], device1[,4]), ]
device4 <- device4[grep(dates[i], device1[,4]), ]
device5 <- device5[grep(dates[i], device1[,4]), ]
device6 <- device6[grep(dates[i], device1[,4]), ]
device7 <- device7[grep(dates[i], device1[,4]), ]
device8 <- device8[grep(dates[i], device1[,4]), ]

假设您在数据框中输入了数据,例如

> myTable
             Var1       Var2  Var3
1 UNIQUE_ADDRESS1 24/08/2016 13:01  
2 UNIQUE_ADDRESS2 24/08/2016 13:02
3 UNIQUE_ADDRESS3 24/08/2016 13:05
4 UNIQUE_ADDRESS1 25/08/2016  0:00
5 UNIQUE_ADDRESS2 25/08/2016  0:01
6 UNIQUE_ADDRESS3 25/08/2016  0:12

考虑使用 R 包 plyr 的 dlply 函数。

library(plyr)
myList = dlply(aTable, ~ Var1 + Var2, .fun = identity)

列表 myList 的每个元素都将是您的子表之一,例如

> myList[[1]]
         Var1       Var2  Var3
1 UNIQUE_ADDRESS1 24/08/2016 13:01