R-计算每行中正斜杠的出现

时间:2018-07-31 11:14:29

标签: r row

我有一个看起来像这样的数据框:

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" ...

1 个答案:

答案 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)))