Arhn - архитектура программирования

подмножество данных в R из другого вектора (исключение)

У меня есть фрейм данных со следующими элементами, и я хочу иметь подмножество записей.

location <- c('london', 'london','london', 'newyork' ,'newyork', 'paris', 'delhi')
year<- c(1990, 1991, 1992, 2001, 2002, 2003,2001)

df<- data.frame(location,year)

а у меня вектор говорят

x<- c('newyork', 'delhi')

Я хочу подмножить фрейм данных таким образом, чтобы окончательный фрейм данных содержал все элементы, кроме местоположения, которые не указаны в x. Я хотел бы создать тестовый фрейм данных, я пробовал это

 test1 <- df[df$location %in% c('newyork','delhi'), ] 

Это дает мне обратное. Может ли кто-нибудь помочь?

Я ожидаю такой вывод:

       location year 
       london    1990
       london    1991
       london    1992
       paris     2003
12.07.2017

  • Попробуйте это: test1<- df[!df$location %in% c('newyork','delhi'), ] 12.07.2017
  • Спасибо! это сработало! 12.07.2017

Ответы:


1

как указал @ycw в комментарии, отрицание логического условия даст вам ожидаемый результат

location <- c('london', 'london','london', 'newyork' ,'newyork', 'paris', 'delhi')
year <- c(1990, 1991, 1992, 2001, 2002, 2003,2001)

df <- data.frame(location, year)

x <- c('newyork', 'delhi')

# add"!" to the subset condition
test1 <- df[ !df$location %in% c('newyork','delhi'), ] 

test1

Результат

  location year
1   london 1990
2   london 1991
3   london 1992
6    paris 2003
12.07.2017

2

Использование Dplyr:

new_df <- df %>% 
  filter(!(location %in% c("newyork", "delhi")))
12.07.2017

3

Если есть только пара элементов, которые вы хотите исключить из исходного фрейма данных, вы также можете создать подмножество следующим образом:

location <- c('london', 'london','london', 'newyork' ,'newyork', 
'paris', 'delhi')
year<- c(1990, 1991, 1992, 2001, 2002, 2003,2001)

df<- data.frame(location,year)

# Identify which elements you wish to remove and precede with NOT operator (!)
df2 <- df[!df$location=="newyork" & !df$location=="paris",]

df2

Обратите внимание, что это не очень эффективно, если вы планируете фильтровать несколько элементов. В таких случаях подход ycw и Дэмиана лучше.

Однако, если вам нужно удалить только один или несколько элементов, приведенная выше схема является простым, быстрым и логичным способом добиться того, что вам нужно:

 location year
1   london 1990
2   london 1991
3   london 1992
7    delhi 2001
12.07.2017
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..