我有一个看起来像这样的数据框:
12/04/2017 00:00:02.30,-2.31,-2.97,-0.3,-1.4
12/04/2017 00:00:02.40,-1.89,-2.94,-1.15,-1.4
12/04/2017 00:00:02.50,-1.66,-3.14,-0.06,-1.39
12/04/2017 00:00:02.60,-1.84,-3.16,0.18,-1.37
12/04/2017 00:00:02.70,-2.12/04/2017 00:00:02.80,-2,-2.56,0.17,-1.41
12/04/2017 00:00:02.90,-2.18,-2.31,0.11,-1.45
12/04/2017 00:00:03,-2.14,-2.21,-0.05,-1.45
数据来自somtimes的记录器将日期之一写入另一行的行(示例中的第5行)。我需要在R中删除这些行。但是我真的不知道如何在数据框中查找和删除这些行。
我的第一个想法是在每行中查找正斜杠的数量。但是找不到方法。
另一种方法可能是获取所有行的平均长度,并检查比平均长度更长的行,然后删除这些行。但是这里也一样。无法找到对行中所有字符(字符串和数字)求平均值的方法。
edit:str(df)的输出: str(df)
'data.frame': 856645 obs. of 6 variables:
$ station: chr "Arof" "Arof" "Arof" "Arof" ...
$ date : Factor w/ 863989 levels "12/04/2017 00:00:01.10",..: 1 2 3 4 5 6 7 8 9 10 ...
$ u : Factor w/ 1327 levels "","0","-0.01",..: 132 84 146 136 112 120 126 33 281 240 ...
$ v : num -0.62 -0.41 -1.58 -1.65 -1.25 -1.8 -1.86 -2.46 -2.59 -2.87 ...
$ w : num 0.89 1.09 0.63 0.53 0.84 0.58 0.46 0.48 -0.16 -0.01 ...
$ temp : num -1.36 -1.41 -1.41 -1.41 -1.41 -1.41 -1.5 -1.48 -1.51 -1.46 ...
- attr(*, "na.action")=Class 'omit' Named int [1:7344] 18 113 246 378 513 643 646 778 909 1042 ...
.. ..- attr(*, "names")= chr [1:7344] "18" "113" "246" "378" ...
答案 0 :(得分:1)
使用grepl
,我们可以搜索。后跟2位数字,后跟/
grepl("\\.\\d{2}\\/",data$date)
[1] FALSE FALSE FALSE FALSE TRUE FALSE FALSE
apply(data,1, function(x) sum(grepl("\\.\\d{2}\\/",x)))