Отображать только одну строку для каждого значения NA - PullRequest
0 голосов
/ 02 февраля 2010

В какой-то момент в моем скрипте мне нравится видеть число missing values в моем data.frame и отображать их.В моем случае у меня есть:

out <- read.csv(file="...../OUT.csv", na.strings="NULL")

sum(is.na(out$codeHelper))

out[is.na(out$codeHelper),c(1,length(colnames(out)))]

Работает отлично.Тем не менее, последняя команда, очевидно, дает мне все data.frame, где NA равно TRUE, например:

5561                  Yemen (PDR) <NA>
5562                  Yemen (PDR) <NA>
5563                  Yemen (PDR) <NA>
5564                  Yemen (PDR) <NA>
5565                  Yemen (PDR) <NA>
5566                  Yemen (PDR) <NA>
5567                  Yemen (PDR) <NA>
5568                  Yemen (PDR) <NA>
5601 Zaire (Democ Republic Congo) <NA>
5602 Zaire (Democ Republic Congo) <NA>
5603 Zaire (Democ Republic Congo) <NA>
5604 Zaire (Democ Republic Congo) <NA>
5605 Zaire (Democ Republic Congo) <NA>

с большим кадром и большим количеством NA, которые выглядят довольно грязно.Для меня важно только то, где происходит NA, т.е. в какой стране (во втором столбце) отсутствует пропущенное значение в третьем столбце.

Так как я могу отображать только одну строку для каждой страны?

Это должно выглядеть примерно так:

    1                  Yemen (PDR) <NA>
    2 Zaire (Democ Republic Congo) <NA>
    3                          USA <NA>
    4                     W. Samoa <NA>

Ответы [ 2 ]

3 голосов
/ 02 февраля 2010

unique(c(1,2,3,4,4))

даст вам

1 2 3 4

так

unique(out[is.na(out$codeHelper),c(1,length(colnames(out)))])

должно быть то, что вы ищете?

3 голосов
/ 02 февраля 2010

Попробуйте что-то вроде этого:

subset(dataframe.name, !duplicated(country.colname),
       select=c(col1.name, col2.name, ...))

см. Также связанный вопрос: как удалить частичные дубликаты из фрейма данных?

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