我有一个这样的数据框:
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`或其他内容完成这项工作?
答案 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,]