#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
в виду «избранное»?