#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. Рад, что это сработало для вас, хорошего дня