首页 > 解决方案 > R中是否有一个函数可以删除数千行给定的特定内容?

问题描述

我有一个TLSWL大约 20,000 行的数据框(称为 )。我在 df 中有一个列Time,我需要删除在特定分钟内结束的所有行。我只需要 30 分钟的时间增量来匹配其他数据进行比较。

这是我目前正在使用的:

TLSWL<- TLSWL[TLSWL$Time != "0:06"&TLSWL$Time !="0:12"&TLSWL$Time 
    !="0:18"&TLSWL$Time !="0:24"&TLSWL$Time != "0:36"&TLSWL$Time 
    !="0:42"&TLSWL$Time !="0:48"&TLSWL$Time != "0:54"&TLSWL$Time 
    != "1:06"&TLSWL$Time != "1:12"&TLSWL$Time != "1:18"&TLSWL$Time 
    != "1:24"&TLSWL$Time != "1:36"&TLSWL$Time != "1:42"&TLSWL$Time 
    != "1:48"&TLSWL$Time != "1:54"&TLSWL$Time != "2:06"&TLSWL$Time 
    != "2:12"&TLSWL$Time != "2:18"&TLSWL$Time != "2:24"&TLSWL$Time 
    != "2:36"&TLSWL$Time != "2:42"&TLSWL$Time != "2:48"&TLSWL$Time 
    != "2:54"&TLSWL$Time != "3:06"&TLSWL$Time != "3:12"&TLSWL$Time  
           and so on all the way to the times in 24:xx

它适用于较小且不在军事时间的数据帧,但正如您所见,这样做所需的代码行最终会太长。

这可以更有效地完成吗?

标签: rrows

解决方案


一个选项是创建一个vector('v1') 需要匹配的值,%in%用于获取逻辑向量,否定 ( !) 并对行进行子集化

TLSWL[!TLSWL$Time %in% v1, , drop = FALSE]

推荐阅读