Есть ли функция для подбора данных с использованием качественного требования в столбце? - PullRequest
0 голосов
/ 10 марта 2020

У меня проблемы с созданием подмножества для большого кадра данных. Мне нужно извлечь все строки, которые соответствуют одному из двух правильных городов в одном из столбцов, однако любое подмножество, которое я создаю, оказывается пустым. Учитывая основной фрейм данных, я пытаюсь:

New = data[data$Home.port %in% c("ARDGLASS","NEWLYN")]

Однако R возвращает "выбранные неопределенные столбцы"

Ответы [ 4 ]

3 голосов
/ 10 марта 2020

Запятая отсутствует:

New = data[data$Home.port %in% c("ARDGLASS","NEWLYN"), ]

Это потому, что вы выбираете строки, а не столбцы; если вы пропустите запятую, R попытается установить столбцы вместо строк.

1 голос
/ 10 марта 2020

Я рекомендую использовать data.table так:

# install.packages(data.table)
library(data.table)
data <- as.data.table(data)
new_data <- data[Home.port %in% c("ARDGLASS","NEWLYN")]

Вы можете проверить этот веб , чтобы изучить data.table очень быстро с большими базами данных

0 голосов
/ 13 марта 2020

При использовании subset () первым аргументом является фрейм данных, который вы хотите поместить в подмножество. Если вы хотите проверить несколько переменных, вам не нужно помещать «data $» впереди. Это экономит время и облегчает чтение.

datasubset <- subset(data, Home.port %in% c("ARDGLASS","NEWLYN"))

Вы также можете использовать несколько условий для поднабора, используя "&" для условия AND или "|" для ИЛИ условия в зависимости от того, что вы планируете делать.

datasubset <- subset(data, Home.port == "ARDGLASS" & Home.port == "NEWLYN"))

0 голосов
/ 10 марта 2020

Функция подмножества также будет выполнять эту задачу

new <- subset(data, subset = Home.port %in% c("ARDGLASS","NEWLYN"))

Базовый подход функционально такой же, просто вопрос использования декларативной функции для задачи или нет.

...