首页 > 解决方案 > 过滤 R 数据框后,所有行都更改为 NA

问题描述

我有一个由五列组成的大型数据框。

当我尝试过滤其中一列时,另一列中的每一行都更改为 NA。我过滤的列是 VehicleEvent,Location 是接收 NA 替换的列。

str(datain)
'data.frame':   7551105 obs. of  19 variables:
 $ DiagnosticIDs   : chr  "2,0,3,1,774,775,810,744,951,947" "2,0,3,1,774,775,7,718,720,951,837,810,744,947" "2,0,3,1,774,775,7,810,744,951,947" NA ...
 $ DiagnosticValues: chr  "28.211,48284.435,31647,7650.75,0,0,0,1,1,-73" "28.272,48290.34,31650,7651.2,0,0,550,0,0,54,0,0,1,-81" "28.272,48290.34,31650,7651.2,0,0,550,0,1,1,-81" NA ...
 $ DriverName      : chr  "" "" "" NA ...
 $ IgnitionOn      : chr  "true" "true" "true" NA ...
 $ Latitude        : num  51.5 51.5 51.5 51.5 51.5 ...
 $ Longitude       : num  -0.462 -0.462 -0.463 -0.463 -0.463 ...
 $ Location        : chr  "" "Parking area" "Dispatch" NA ...
 $ Time            : num  1.52e+09 1.52e+09 1.52e+09 1.52e+09 1.52e+09 ...
     some columns not of interest omitted
 $ AlertId         : chr  NA NA NA "6fbc400e-1ae5-11e8-9eee-7845c4f0a3d7" ...
 $ AlertType       : chr  NA NA NA "Exited" ...
 $ VehicleEvent    : chr  NA NA NA "fabb4fcb-c254-4a13-8f9c-a3307a4ba63b" ...
 $ MessageType     : chr  NA NA NA "InsightAlertMessage" ...


str(datadf)
'data.frame':   104136 obs. of  6 variables:
$ Location    : chr  NA NA NA NA ...
$ Longitude   : num  -0.483 -0.462 -0.466 -0.464 -0.464 ...    
$ Latitude    : num  51.5 51.5 51.5 51.5 51.5 ...
$ AlertId     : chr  "ae22e47c-47c4-11e8-9513-7845c4f0a3d7" "3e13ccbc-47c6-11e8-a72e-7845c4f0a3d7" "5428da40-47c8-11e8-b59f-7845c4f0a3d7" "2fcd3fa8-47df-11e8-85a9-7845c4f0a3d7" ...
$ AlertType   : chr  "Exited" "Exited" "Exited" "Exited" ...
$ VehicleEvent: chr  "792d6964-6ba1-4f98-9b63-5c9e194fff6d" "792d6964-6ba1-4f98-9b63-5c9e194fff6d" "792d6964-6ba1-4f98-9b63-5c9e194fff6d" "792d6964-6ba1-4f98-9b63-5c9e194fff6d" ...

数据中没有非 ACSII 字符(如果这意味着什么,它们都是从 XML 中提取的)。所有逗号、尾随空格、句号(句点)和斜杠都已从 Location 中删除,以防它们造成这种情况。

列已被重命名(以防万一使用相同的名称发生其他事情)。

我已经尝试了几乎所有我能想到的东西,包括......

datadf <- datain %>%
    filter(AlertType == "Exited" &
           VehicleEvent == "792d6964-6ba1-4f98-9b63-5c9e194fff6d") %>%
            select(Location, Latitude, Longitude)

datadf <- datain[datain$VehicleEvent == "792d6964-6ba1-4f98-9b63-5c9e194fff6d",]

最后一个将所有列更改为“NA”。

VehicleEvent中的数据是不是很奇怪,无法处理……肯定不是。我的想法已经用完了,因此我向更广泛的社区提出了要求。

标签: rdataframefilter

解决方案


推荐阅读