При условном сопоставлении двух значений столбца, почему в результирующем фрейме данных, который печатается на консоли RStudio, печатаются несколько значений <NA>? - PullRequest
0 голосов
/ 04 июля 2018

Когда я проверяю, содержит ли один столбец определенное значение, а другой - другое значение, почему результирующий фрейм данных, который выводится на консоль в RStudio, показывает несколько значений <NA> между ними?

Я хочу видеть всю строку в каждом случае, поэтому выбрал следующий подход (вместо which(geochats$origin_city == "new york" & geochats$end_city == "manassas"), который бы перечислял номера строк совпадающих строк).

В этом случае я ожидаю увидеть две строки, напечатанные на консоли, но вместо этого получу значительно больше, большинство из которых отображают <NA>.

Почему это происходит?

> geochats[geochats$origin_city == "new york" & geochats$end_city == "manassas", ]
                                    partid       user origin_city end_city  associate
2893  2aadb2ef-c558-4902-a75b-7e5ca62b2079 WB7iSYU8yR    new york manassas CefPn1OTZF
NA                                    <NA>       <NA>        <NA>     <NA>       <NA>
NA.1                                  <NA>       <NA>        <NA>     <NA>       <NA>
NA.2                                  <NA>       <NA>        <NA>     <NA>       <NA>
NA.3                                  <NA>       <NA>        <NA>     <NA>       <NA>
NA.4                                  <NA>       <NA>        <NA>     <NA>       <NA>
NA.5                                  <NA>       <NA>        <NA>     <NA>       <NA>
NA.6                                  <NA>       <NA>        <NA>     <NA>       <NA>
NA.7                                  <NA>       <NA>        <NA>     <NA>       <NA>
NA.8                                  <NA>       <NA>        <NA>     <NA>       <NA>
NA.9                                  <NA>       <NA>        <NA>     <NA>       <NA>
NA.10                                 <NA>       <NA>        <NA>     <NA>       <NA>
NA.11                                 <NA>       <NA>        <NA>     <NA>       <NA>
NA.12                                 <NA>       <NA>        <NA>     <NA>       <NA>
NA.13                                 <NA>       <NA>        <NA>     <NA>       <NA>
NA.14                                 <NA>       <NA>        <NA>     <NA>       <NA>
15649 e5af7b89-e38b-463f-a1ac-2e64d2e1bd24 WB7iSYU8yR    new york manassas CefPn1OTZF
NA.15                                 <NA>       <NA>        <NA>     <NA>       <NA>
NA.16                                 <NA>       <NA>        <NA>     <NA>       <NA>
NA.17                                 <NA>       <NA>        <NA>     <NA>       <NA>
NA.18                                 <NA>       <NA>        <NA>     <NA>       <NA>

1 Ответ

0 голосов
/ 04 июля 2018

Как сказано в комментариях, логическое условие плохо работает для поднабора в случае пропуска значений. Поэтому мы можем ограничить вывод условия с помощью which().

geochats[which(geochats$origin_city == "new york" & geochats$end_city == "manassas"), ]

Быстрый пример:

x <- c(NA, 1, 2)

Здесь условие x > 1 выводит NA FALSE TRUE, поскольку его нельзя оценить для значения NA. which теперь выбирает положение всех TRUE значений в выходном векторе и поэтому может использоваться для поднабора при игнорировании NA:

> x[which(x > 1)]
[1] 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...