Вычтите определенное значение на основе значения 2 других столбцов в R - PullRequest
0 голосов
/ 24 октября 2019

У меня есть фрейм данных (GDPPerCap) со столбцами для Year, Country.Code и GDPperCapita. Например:

Year     Country.Code     GDPperCapita
1960     AUS              15,000
1960     USA              20,000
1960     ARG              8,000
.
.
.
2018     USA              60,000

Я хочу настроить новый столбец для конкретной страны (например, США) таким образом, чтобы значение было равно переменной GDPPerCapita для этой строки, минус GDPperCapita для США в2018. (В конце концов я хочу настроить цикл так, чтобы он создавал похожий столбец для каждого кода страны.

Я попытался использовать mutate:

GDPPerCap <- GDPPerCap %>% 

mutate(USA_Difference = GDPperCapita - GDPperCapita[Country.Code == "USA", Year == "2018"])

Я хочу, чтобы он достиг:

Year     Country.Code     GDPperCapita   USA_Difference
1960     AUS              15,000         -45,000
1960     USA              20,000         -40,000
1960     ARG              8,000          -52,000
.
.
.
2018     USA              60,000          0

Извинения, это мой первый пост, и я его не совсем прибил. Но надеюсь, вы поняли мою точку зрения.

Ответы [ 2 ]

0 голосов
/ 24 октября 2019

Вы можете использовать векторы и напрямую назначать таблицу

GDPPerCap$USA_Difference <- as.numeric(paste(GDPPerCap$GDPperCapita))-as.numeric(paste(GDPPerCap[GDPPerCap$Year=="2018" & GDPPerCap$Country.Code =="USA",3]))
0 голосов
/ 24 октября 2019

Вы можете получить ВВП на душу населения в США в 2018 году, набрав

USA2018 <- GDPPerCap %>% filter(Country.Code=="USA",Year == 2018) %>% pull(GDPperCapita)

# Note: if Year is in character format you might have to do Year == "2018" instead

Тогда указанный код должен работать

GDPPerCap <- GDPPerCap %>% 
                       mutate(USA_Difference = GDPperCapita - USA2018)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...