r - 绘制 Y(国家)对 X(年)显示 24 个国家的 GDP 同比增长(折线图)
问题描述
所以我不确定我做错了什么,但我一直遇到错误。所以我的项目的目标是根据我认为对我有意义的变量来缩小国家的选择范围,因此我试图根据下面的代码一点一点地减少(请原谅,如果我刚开始学习 R )。所以我已经设法获得了 24 个理想的国家,但肯定想进一步缩小范围,但想查看所选国家与 2015:2019 年的图表并显示它们的 gdp 增长。
所以我不断收到诸如Error in dimnames(x) <- dnx : 'dimnames' applied to non-array
and之类的错误Error in dataframe
。
我不确定在图书馆(tidyr)之后我应该做什么。我在网上尝试了很多选项,但我觉得在这段代码之前我做错了什么。
data1 <-WDI(indicator= c("IT.NET.USER.ZS", "BX.KLT.DINV.CD.WD", "IT.NET.SECR.P6" , "NY.GDP.MKTP.KD.ZG"), start = 2015, end = 2019, extra = FALSE)
#get column names
colnames(data1)
#View data
data1 %>%
view()
#Change column names
names(data1)[names(data1) == "IT.NET.USER.ZS"] <- "internet_users"
names(data1)[names(data1) == "BX.KLT.DINV.CD.WD"] <- "foreign_direct_investment"
names(data1)[names(data1) == "NY.GDP.MKTP.KD.ZG"] <- "gdp_growth"
names(data1)[names(data1) == "IT.NET.SECR.P6"] <- "secure_internet"
summary(data1)
data1 %>%
count(internet_users, sort = TRUE)
data1 %>%
count(year, sort = TRUE)
data1 %>%
count(country, sort = TRUE)
view(data1)
gdp <- summary(data1$gdp_growth)
users <- summary(data1$internet_users)
fdi <- summary(data1$foreign_direct_investment)
secure <- summary(data1$secure_internet)
country <- summary(data1$country)
names(data1)
#Selecting range from Mean to 3rd Quartile of data1 for internet_users
data2 <- data1[ c(data1$internet_users < 76.56 & data1$internet_users > 52.54 & data1$year == 2019), ]
summary(data2)
#Selecting gdp growth >= Mean of gdp growth 2.470
data3 <- data2[ c(data2$gdp_growth >= 2.4451),]
is.na(data3)
na.omit(data3)
view(data3)
#Removal of non country data from data3
data4 <- data3[-c(1,4,9,17,19,20,24,25,29,30,33,34,35,36,38,39,40,42,43,44),]
view(data4)
countries_1 <- c(data4$country)
head(countries_1)
summary(countries_1)
#trynna plot something that works with year/country and gdp
yearchoice <- c(year = 2015:2019)
str(data4)
datalinegraph <- data.frame(c(yearchoice,countries_1))
unique(data4$country)
**#listing the countries I think I need to plat against**
data5 <- data1 %>%
filter(country %in% countries_1)
library(tidyr)
data6 <-data.frame(data5)
data6.df$gdp = rownames(data5)
df.long = gather(data = data5,
key = yearchoice,
value = gdp)
ggplot(data = df.long, aes(x = yearchoice,
y = gdp,
group=data5,
color=variable)) +
geom_line() +
geom_point()```
解决方案
这是国家/地区内的国家变量:
data1 <-WDI(indicator= c("IT.NET.USER.ZS", "BX.KLT.DINV.CD.WD", "IT.NET.SECR.P6" , "NY.GDP.MKTP.KD.ZG"), start = 2015, end = 2019, extra = FALSE)
#Change column names
names(data1)[names(data1) == "IT.NET.USER.ZS"] <- "internet_users"
names(data1)[names(data1) == "BX.KLT.DINV.CD.WD"] <- "foreign_direct_investment"
names(data1)[names(data1) == "NY.GDP.MKTP.KD.ZG"] <- "gdp_growth"
names(data1)[names(data1) == "IT.NET.SECR.P6"] <- "secure_internet"
#Selecting range from Mean to 3rd Quartile of data1 for internet_users
data2 <- data1 %>% filter(internet_users < 76.56 &
internet_users > 52.54 &
year == 2019 &
gdp_growth >= 2.4451)
#Removal of non country data from data3
data4 <- data2 %>% filter(!iso2c %in% c("4E", "T4", "V3", "XT", "Z4"))
countries_1 <- c(data4$country)
#listing the countries I think I need to plat against**
data5 <- data1 %>%
filter(country %in% countries_1)
r01 <- function(x){
x <- x-min(x, na.rm=TRUE)
x/max(x, na.rm=TRUE)
}
df.long = data5 %>%
mutate(across(internet_users:gdp_growth, r01)) %>%
pivot_longer(internet_users:gdp_growth,
names_to="variables",
values_to="vals")
ggplot(data = df.long, aes(x = year,
y = vals,
color=variables)) +
geom_line() +
facet_wrap(~country) +
theme(legend.position = "top")
这是变量中的国家:
df.long2 = data5 %>%
pivot_longer(internet_users:gdp_growth,
names_to="variables",
values_to="vals")
ggplot(data = df.long2, aes(x = year,
y = vals,
color=country)) +
geom_line() +
facet_wrap(~variables, scales="free_y") +
theme(legend.position = "top")
推荐阅读
- django - 如何自动更改对象的状态?
- load-testing - 如何获得最小值、平均值、最大值。标准。ALM 测试用例中运行的每个测试脚本的偏差?
- docker - Docker 容器 tensorflow/tensorflow:latest-gpu-jupyter 提供 0 个内核
- mqtt - 使用物理设备时无法连接到 MQTT Broker
- r - 执行分位数回归时 R 中 quantreg 输出的尴尬行为
- java - 房间数据库迁移冻结屏幕
- .net-core - 从 C# 使用 AwsSdkCall
- python - 通过 Traci 操作三个传入车道的交叉口
- python - 在 plotly express violin plot 中将 x 轴视为分类
- ios - iOs 15.1 - 使用 NSPredicate 进行数组过滤的性能问题