从数据帧中提取特殊行

时间:2016-12-12 10:00:52

标签: r dataframe

我有一个这样的数据框:

     auftreten_Fehler Diff_Fehler   auftreten_Warnung Diff_Warnung
1 2016-08-10 17:35:25    207.0000 2016-08-10 17:08:56     207.0000
2 2016-08-29 19:16:10    226.0000 2016-08-29 19:15:48     226.0000
3 2016-08-30 19:38:28    234.0000 2016-08-30 19:38:24     234.0000
4 2016-10-22 00:30:20    204.3333 2016-10-20 20:05:11     224.0000
5 2016-10-26 19:19:42    234.0000 2016-10-26 19:16:27     234.0000
6 2016-10-27 15:31:44    235.0000 2016-10-27 05:21:46     235.0000
7 2016-10-28 10:39:28    204.3333 2016-10-28 10:39:24     204.3333
8 2016-11-07 19:12:26    207.0000 2016-11-07 19:12:18     207.0000
9 2016-11-16 11:14:51    204.3333 2016-11-11 09:18:46     213.0000

我想只显示具有这种情况的行:

k<-(FehlerWarnung[i,]$auftreten_Fehler - FehlerWarnung[i,]$auftreten_Warnung)
units(k)<-"mins" 
if(k<2)  #Show only rows if the difference is less than two minuts

如何在一行代码中使用àpply`或其他内容完成这项工作?

2 个答案:

答案 0 :(得分:1)

使用difftime一步完成时差计算,然后像这样直接索引你的行。

FehlerWarnung[difftime(FehlerWarnung$auftreten_Fehler, FehlerWarnung$auftreten_Warnung, units='mins') < 2,]

答案 1 :(得分:1)

对德语单词不熟悉,因此创建了一个虚拟dta。遗憾

difftime()完成这项工作。您还可以指定所需的Unite of difference(默认为秒)

df
                    a                   b
1 2016-08-10 17:35:25 2016-08-10 17:08:56
2 2016-08-29 19:16:10 2016-08-29 19:15:48
3 2016-08-30 19:38:28 2016-08-30 19:38:24  

#difftime(df$a, df$b)
#Time differences in secs
#[1] 1589   22    4


df[difftime(df$a, df$b)>120,]