【发布时间】:2021-10-30 19:10:08
【问题描述】:
我正在处理一个包含以下列的数据框 - 国家、因素、年份、技术人员数量。
我想要实现的目标:创建一个新的数据框,其中仅包含每个国家/地区的最新数据(即最高年份)(注意:每个国家/地区都有几行数据)。
我创建了一个函数来隔离国家和年份,如下所示。 (注意:主数据集 = 数字)
#Function to isolate 1 country
one_country1 <- function(x) {
a <- numeric %>% filter(Factor == x)
return(a) }
#Function to isolate latest year
latest_country <- function(y){
b <- y %>% filter(Year == max(Year))
return(b) }
#Function to isolate both country and latest year
best_data <- function(z){
G <- latest_country(one_country1(z))
return(G)}
然后我将其制成一个 for 循环,以将其应用于每个国家/地区,如下所示。
z <- 1
loop_data <- for(z in 1:114){
print(best_data(z))}
这会产生正确的数据,但它是一种奇怪的格式,不是数据框。当我尝试“typeof”时,它显示“NULL”,我似乎无法使用简单的 as.data.frame 函数或从空数据框开始并将 rbind.data.frame 合并到函数中将其转换为数据框。结果显示如下:
Country Factor Year Technicians
1 Yemen 112 2010 1809
Country Factor Year Technicians
1 Zambia 113 2012 1126
Country Factor Year Technicians
1 Zimbabwe 114 2018 1126
typeof(loop_data) = NULL
任何有关如何修改此代码以输出数据框的帮助将不胜感激!我几周前才开始学习 R,所以请原谅代码可能是多么业余和不整洁!
【问题讨论】:
-
result <- df %>% group_by(Country) %>% filter(Year == max(Year))?