Удаление всего, кроме соответствующих данных

#r #dataframe #rows #delete-row

#r #фрейм данных #строки #удалить-строка

Вопрос:

Я использую код:

student_data1 <- student_data1[!(student_data1$gvkey == 6310),] %>%

head()

чтобы удалить компанию с помощью gvkey 6310, но она удаляет все остальное и сохраняет 6310.

Как мне нужно изменить код и как будет выглядеть код, если я захочу удалить 6310 и 9555?

Заранее благодарю вас! 🙂

Ответ №1:

Всегда полезно, когда у нас есть данные, которые мы можем просмотреть, чтобы точно знать, что происходит. В будущем вы можете поделиться некоторыми своими данными, используя что-то вроде dput(head(student_data1, 10)) , а затем скопировать и вставить результат этого в свой вопрос. Мы сгенерируем некоторые данные, чтобы показать пример здесь.

 student_data1 <-
  data.frame(
    gvkey = rep(c(6310 , 9555, 2222, 11, 2), each = 10),
    Var1 = rnorm(50)
  )

head(student_data1, 5)
#>   gvkey         Var1
#> 1  6310  0.065167828
#> 2  6310  0.334672998
#> 3  6310 -0.459434631
#> 4  6310 -0.002706843
#> 5  6310  0.596642565

nrow(student_data1)
#> [1] 50
 

Из опубликованного вами кода похоже, что он должен дать вам то, что вы хотите, чтобы просто удалить gvkey 6310 с помощью используемого вами синтаксиса, хотя обычно мы использовали != бы вместо !(==) . Единственное, что я могу предположить, возможно, вы пропустили ! в своем реальном сценарии.

 df <- student_data1[!(student_data1$gvkey == 6310) , ]

head(df, 5)
#>    gvkey       Var1
#> 11  9555 -0.1338284
#> 12  9555 -3.4963800
#> 13  9555  0.7090384
#> 14  9555 -0.5466933
#> 15  9555 -1.5392845

nrow(df)
#> [1] 40
 

Для удаления нескольких значений часто проще всего использовать %in% оператор.

 df <- student_data1[!student_data1$gvkey %in% c(6310, 9555) , ]

head(df, 5)
#>    gvkey       Var1
#> 21  2222  2.9606101
#> 22  2222  0.7001521
#> 23  2222  0.1065952
#> 24  2222  0.7103071
#> 25  2222 -0.3279968

nrow(df)
#> [1] 30
 

Создано 2021-12-08 пакетом reprex (v2.0.1)

Комментарии:

1. Боже мой!! Большое вам спасибо! Вы не можете себе представить, насколько это важно для меня 🙂 Хорошего дня! 🙂

2. Рад, что это сработало для вас, хорошего дня