Подмножество пяти или более столбцов с различными условиями R data.table - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть data.table, который выглядит следующим образом:

 COUNTRY   GENDER     CURRENCY    INCOME_GROUP    YEAR  
 FRANCE     MAN       EURO            HIGH        2014  
 GERMANY    WOMEN     EURO            LOW         2015  
 FINLAND    MAN       EURO            LOW         2016  
 JAPAN      MAN       YEN             HIGH        2017  
 USA        WOMEN     DOLLAR          LOW         2018  

Я хочу добавить в эту таблицу следующий код: datanew <- data[data$YEAR == "2014"& data$CURRENCY == "DOLLAR" & data$COUNTRY == FRANCE & data$INCOME_GROUP == LOW], но всякий раз, когда я добавляю три или более условия, переменная datanew всегда имеет «0» наблюдение. Я имею в виду, я не могу добавить 4 или более условий. Есть ли способ решить эту проблему? Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 10 апреля 2020

Ваш код не повторяет ошибку, при запуске кода ошибка:

Error in `[.data.frame`(data, data$YEAR == "2014" & data$CURRENCY == "DOLLAR" &  : 

объект 'FRANCE' не найден

Это потому, что вы пытаетесь вызвать переменную называется FRANCE (и еще один называется LOW), когда вы должны передавать символьный вектор, как вы это делаете с "DOLLAR":

datanew <- data[data$YEAR == "2014"& data$CURRENCY == "DOLLAR" & data$COUNTRY == "FRANCE" & data$INCOME_GROUP == "LOW"]

Это повторяет вашу проблему, data frame with 0 columns and 5 rows, которая заключается в том, что у вас нет строк которые удовлетворяют всем условиям - у вас нет данных. Вы можете иметь столько условий, сколько хотите, но вам нужны данные, которые их удовлетворяют. Следующая строка возвращает одну строку:

data[data$YEAR == "2014"& data$CURRENCY == "EURO" & data$COUNTRY == "FRANCE" & data$INCOME_GROUP == "HIGH"]
0 голосов
/ 09 апреля 2020

Я предполагаю, что вы хотите подгруппировать строки, которые соответствуют заданным вами критериям? В этом случае нет ни одной строки, удовлетворяющей вашим критериям.

Если вы попытаетесь:

data = fread('COUNTRY   GENDER     CURRENCY    INCOME_GROUP    YEAR  
 FRANCE     MAN       EURO            HIGH        2014  
 GERMANY    WOMEN     EURO            LOW         2015  
 FINLAND    MAN       EURO            LOW         2016  
 JAPAN      MAN       YEN             HIGH        2017  
 USA        WOMEN     DOLLAR          LOW         2018  
')

data[YEAR == "2014" & CURRENCY == "EURO" & COUNTRY == "FRANCE" & INCOME_GROUP == "HIGH"]

возвращает:

   COUNTRY GENDER CURRENCY INCOME_GROUP YEAR
1:  FRANCE    MAN     EURO         HIGH 2014

Кроме того, вам нужно заключить в кавычки FRANCE и LOW в своем утверждении, и так как это data.table, вам не нужно использовать знак доллара для идентификации столбцов.

...