удаление строк без фильтрации других значений - PullRequest
0 голосов
/ 29 ноября 2018

Скажем, у меня есть такой фрейм данных:

NAME    YEAR      PERCENTAGE
A       2001        NA
A       2002        NA
A       2003        5.0
B       2001        3.3 
B       2002        2.3 
B       2003        NA 

Я хочу удалить строки с NA, выбрав определенные строки:

NAME    YEAR      PERCENTAGE
A       2003        5.0
B       2001        3.3 
B       2002        2.3 

, а затем изменить B на A, ожидаемый результаткак это:

NAME    YEAR      PERCENTAGE
A       2001        3.3 
A       2002        2.3 
A       2003        5.0

Я пытался subset(), но, поскольку у меня есть другие значения, он будет фильтровать другие значения, которые должны остаться.

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Предполагается, что ваш фрейм данных называется df:

library(dplyr)

df %>% na.omit() %>% mutate(NAME = "A")

Результат:

  NAME YEAR PERC
1    A 2003  5.0
2    A 2001  3.3
3    A 2002  2.3
0 голосов
/ 29 ноября 2018

С библиотекой dplyr у вас есть доступ к нескольким функциям (например, filter () , range () или mutate () ) который может изменить ваш фрейм данных:

# the dataframe    
df <- data.frame(
      NAME = rep(c('A', 'B'), each = 3),
      YEAR = rep(2001:2003, length = 6),
      PERC = c(NA, NA, 5, 3.3, 2.3, NA)
    )

# load the library
library(dplyr)


df %>% 
  filter(!is.na(PERC)) %>%                         # filter missing values
  arrange(YEAR) %>%                                # order according YEAR
  mutate(NAME = replace(NAME, NAME == 'B', 'A'))   # change values

# result
  NAME YEAR PERC
1    A 2001  3.3
2    A 2002  2.3
3    A 2003  5.0
...