удаление NA и пустых строк из строк в столбце - PullRequest
0 голосов
/ 04 декабря 2018

Я не могу заставить это работать с моим кодом R.

Я пытаюсь удалить все пробелы и значения NA из столбца Weapon.Description в наборе данных crimeData.Затем распечатайте заголовок столбца (без пробелов и NA).

Вот мой текущий код, хотя он по какой-то причине не удаляет пробелы:

crimeData[!(!is.na(crimeData$Weapon.Description) & 
crimeData$Weapon.Description==""), ]
head(crimeData$Weapon.Description)

[1] STRONG-ARM (HANDS, FIST, FEET OR BODILY FORCE)
[2]                                            
[3] 
[4]                                                                                             
[5]STRONG-ARM (HANDS, FIST, FEET OR BODILY FORCE)

Ответы [ 3 ]

0 голосов
/ 04 декабря 2018

Ваша логика немного не в порядке:

  • !is.na(crimeData$Weapon.Description) дает вам строки, где содержимое не NA
  • crimeData$Weapon.Description=="") дает вам строки, где содержимое являетсяпустая строка
  • !(...&...) отрицает ее, поэтому вы запрашиваете все строки, которые "не (не-NA и пустые)"

Возможно, вы хотите "нет (нет данных)или пустой)Один из них должен работать:

crimeData[ !crimeData$Weapon.Description %in% c("", NA), ]
crimeData[ !is.na(crimeData$Weapon.Description) & crimeData$Weapon.Description != "", ]
crimeData[ !( is.na(crimeData$Weapon.Description) | crimeData$Weapon.Description == ""), ]
crimeData[ !is.na(crimeData$Weapon.Description) & nzchar(crimeData$Weapon.Description), ]

Не уверен, что это фактор, но это не поймает «только 1+ пробелов».Если это так, вы можете сначала сделать

crimeData$Weapon.Description <- trimws(crimeData$Weapon.Description)
0 голосов
/ 04 декабря 2018

Считывание всех пробелов как NA с последующим использованием na.omit для удаления

crimeDate <- read.csv(file=file.choose(), na.strings = c("", "NA"))
na.omit(crimeDate$Weapon.Description)
0 голосов
/ 04 декабря 2018

Я предполагаю, что вы пытаетесь удалить весь ряд NA.Если это так, попробуйте следующее:

crimeData[which(is.na(crimeData$Weapon.Description) == FALSE),]

which является логическим;установка is.na() в FALSE означает, что все NA s будут удалены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...