如何使用带有mutate()的for循环来计算R中WorldPhones数据集每年电话号码的增长?

gjmwrych  于 2023-05-20  发布在  其他
关注(0)|答案(1)|浏览(81)

使用for循环结合mutate()函数,使用WorldPhones数据集,确定R中每年使用的手机数量的增长。

我知道可能有更简洁的方法来获得这些信息,但这是实用的uni的一部分,我必须使用函数和循环。
在这里,我在加载数据集后从数据集设置数据框:

library(tidyverse)
WorldPhones <- datasets::WorldPhones

WorldPhones_df <- as.data.frame(WorldPhones)
WorldPhones_df <- WorldPhones_df %>% 
  mutate(Year = rownames(WorldPhones_df))

WorldPhones_df <- WorldPhones_df %>% 
  gather(key = "Region", value = "Phones", 1:7)
WorldPhones_df

WPSumByYear <- WorldPhones_df %>% group_by(Year) %>% summarise(sum(Phones))

到目前为止,一切都很顺利,但我正在努力将其放入一个for循环,该循环也使用mutate函数来按年测量增长。
我尝试的是:

growths <- c(0)
for (i in 2:length(sa_df$Year)){
  growth <- (WPSumByYear$Phones[i-1]- WPSumByYear$Phones[i])
  growths <- c(growths, growth)
}

任何建议赞赏!

2ledvvac

2ledvvac1#

你在找lag吗?

library(tidyverse)

WPSumByYear <- WorldPhones_df %>% group_by(Year) %>% summarise(Phones = sum(Phones))

WPSumByYear |>
  mutate(growth = Phones - lag(Phones))
#> # A tibble: 7 x 3
#>   Year  Phones growth
#>   <chr>  <dbl>  <dbl>
#> 1 1951   74494     NA
#> 2 1956  102199  27705
#> 3 1957  110001   7802
#> 4 1958  118399   8398
#> 5 1959  124801   6402
#> 6 1960  133709   8908
#> 7 1961  141700   7991

相关问题