我正在尝试使用从R中的Gapminder获取的数据,并清理它以用于我的目的。有问题的特定数据集是Agriculture as a % of GDP。由于这是我第一次将R用于任何复杂的事情,我在将数据导出到R之前在Excel中清理了一些数据。具体来说,我将第一列的列名更改为" country"并将文件保存为CSV,以便可以通过read.csv轻松导入。可以找到修改后的csv文件here。我的目标是将世界前10大经济体的数据提取到新的数据集中。使用我的工作目录中的CSV文件,我运行了以下代码
library(dplyr)
library(ggplot2)
library(tidyr)
agri<-read.csv("Agriculture (p of GDP).csv")
agri<-gather(agri, "Year", "P of GDP", 2:52)
top_10_economies<-c("United States", "China", "Japan", "Germany", "United Kingdom", "India", "France", "Brazil", "Italy", "Canada")
agri_top_10<-agri%>%filter(country == top_10_economies)
我期待数据框&#39; agri_top_10&#39;包含所有年份的每个国家的数据,包括新的国家。但是,由此产生的Dataframe仅包含法国,意大利和美国。可以肯定的是,其余数据仍然存在于集合中。例如,运行以下
agri2<-agri%>%filter(country == c("China", "India"))
给出了预期的结果。即具有102个3个变量的观测值的数据帧。但是向向量添加美国会返回一个带有0个观测值的帧。为什么这样,我该如何解决?
答案 0 :(得分:2)
我觉得也许你应该在这里使用%in%
:
agri_top_10 <- agri %>% filter(country %in% top_10_economies)
答案 1 :(得分:1)
如果您想使用base R 而不是dplyr,代码非常简单。
Top10countries = agri[agri$country %in% top_10_economies,]