Как удалить столбец в R?

#r

Вопрос:

Я довольно новичок в программировании на R, и мне было интересно, может ли кто-нибудь помочь мне с этим:

У меня есть 3 колонки («женщины», «мужчины» и «НА»). Я хотел бы избавиться от «НА», чтобы оставаться только с «женщинами» и «мужчинами».

По-видимому, этот код должен выполнять свою работу, но он этого не делает:

 qplot(x = friend_count, data = na.omit(pf), binwidth = 10)  
  scale_x_continuous(lim = c(0, 1000), breaks = seq(0, 1000, 50))  
  facet_wrap(~gender)
 

В качестве альтернативы, это тоже должно сработать, но опять же это не так:

 ggplot(aes(x = friend_count), data = subset(pf, !is.na(gender)))  
  geom_histogram()  
  scale_x_continuous(limits = c(0, 1000), breaks = seq(0, 1000, 50))  
  facet_wrap(~gender)
 

Я был бы очень признателен, если бы кто-нибудь мог указать мне, что я могу сделать, чтобы стереть колонку «NA».

Заранее большое спасибо!

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

1. Попробуйте с data = subset(pf, gender != 'NA')

2. вы также должны предоставить свои данные. пожалуйста, вставьте вывод dput(pf)

3. Я чувствую, что маловероятно, что у вас действительно есть колонка с таким названием NA . пожалуйста, поделитесь своими данными

4. Я подозреваю, что базы R и dplyr не позволят создать столбец с именем «NA». Таким образом, ваш вопрос и ошибка не воспроизводимы, как вы можете видеть в некоторых небрежных ответах ниже

5. Мы все слишком долго гадали. Вам следует отредактировать свой вопрос для ясности, я отметил вопрос как требующий подробностей или ясности.

Ответ №1:

Обратите внимание, что если у вас действительно есть столбец с именем NA (что не очень хорошая идея), R автоматически добавляет a . к его имени. Если вы хотите избавиться от столбца, просто установите его в NULL :

  df$NA. <- NULL
 

В dplyr :

 df %>%
   select(-"NA.")
 

Ответ №2:

 clean_pf <- within(pf, rm("NA"))
 

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

1. @GuedesBF это неверно, см.: df <- data.frame(A = 1:3, B = 1:3); df$"NA" <- NA; within(df, rm("NA"))

2. первоначальный df не имеет значения, но сейчас он вам предоставлен. Вы все еще не правы.

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

Ответ №3:

Вам не нужно выбирать столбец с именем NA, а не фильтровать столбцы для NA.

Что-то вроде этого должно сработать. Использование select() из dplyr

 test_df <- data.frame("females" = c(1,0,0,1,0), 
                      "males" = c(0,1,1,0,0), 
                      "NA" = c(0,0,0,0,1))

dplyr::select(test_df, -`NA.`)
 

Также смотрите ниже, tidyr позволяет создавать столбцы с именем «NA» при использовании pivot_wider() . Я подозреваю, что это могло случиться с вами, но я не могу быть уверен, не видя ваших данных.

 library(tidyr)
library(dplyr)

test_data <- data.frame(type = c("male", "male", "female", "female", NA), 
              value = c(0, 1, 1, 1, 1), 
               id = c(1,2,3,4, 5))



wide_data <- pivot_wider(test_data, id_cols = id, names_from = type) 

names(wide_data)

#[1] "id"     "male"   "female"
# [4] "NA"

wide_data %>% dplyr::select(-`NA`)

 

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

1. Вы имеете dplyr в виду «избранное»?