R语言 计算一列内值的比率

rlcwz9us  于 2022-12-20  发布在  其他
关注(0)|答案(2)|浏览(199)

我使用以下代码创建了一个简单的数据框,其中包含哥斯达黎加和美国的模拟GDP数据

gdp_test <- read.table(text = "Country, Year, GDP
costa_rica  1979  200
costa_rica  1980  210
costa_rica  1981  250
usa         1979  350
usa         1980  375
usa         1981  421", header=T)
gdp_test <- as.data.frame(gdp_test)

输出如下所示

Country. Year. GDP
1 costa_rica  1979 200
2 costa_rica  1980 210
3 costa_rica  1981 250
4        usa  1979 350
5        usa  1980 375
6        usa  1981 421

我想做的是创建一个新的变量,由每个国家每年的GDP与美国同年的GDP之比组成(显然,美国每年的GDP之比是1)。
知道怎么做吗?这在Excel中是一件容易的事,但我没有找到在R中做的方法
我还没能写任何代码来完成这个任务

8dtrkrch

8dtrkrch1#

使用tidyverse可能会有效果。

if(no_NA) {
Remove last pipe line
}

:)

gdp_test %>%filter(Country.=="usa") %>% group_by(Year.) %>% select(-Country.) %>% 
left_join(gdp_test,by="Year.") %>% 
  rename(GDPus=GDP.x,GDP=GDP.y) %>% 
  mutate(ratio=GDP/GDPus) %>% ungroup() %>% 
  mutate(ratio=ifelse(ratio==1,NA,ratio))
mspsb9vt

mspsb9vt2#

这是一个非常笨拙的方法来完成这项工作。我相信有更好的方法来完成它。帮助将是非常感谢的。

gdp_test <- read.table(text = "Country, Year, GDP
costa_rica  1979  200
costa_rica  1980  210
costa_rica  1981  250
usa         1979  350
usa         1980  375
usa         1981  421", header=T)
gdp_test <- as.data.frame(gdp_test) %>%
  mutate(ID=row_number(),)

gdp_usa <- gdp_test$GDP[4:6]
usa <- as.data.frame(c(gdp_usa,gdp_usa)) %>% 
  mutate(ID=row_number(),)
gdp <-full_join(gdp_test,usa, by = "ID")
gdp <- gdp %>% mutate(ratio = GDP/gdp_usa)

相关问题