這更多是對我之前試圖計算變數在年份之間的百分比變化的問題的擴展。我現在希望通過這樣做來擴展這一點,這樣我就可以看到多年來各國的變化。下面包含一些示例資料和代碼。
此代碼計算出使用的更改百分比,但我需要為此添加縣。想一些group_by()縣名可能在這里作業,雖然想不出在這里使用它的方法
df |>
mutate(pdiff = 100*(gdp_per_capita - lag(gdp_per_capita))/gdp_per_capita)
資料樣本
df
Country_Name year gdp_per_capita
Albania 2018 5287.664
Albania 2019 5396.216
Albania 2020 5332.160
Albania 2021 6494.386
Algeria 2018 4142.019
Algeria 2019 3989.668
Algeria 2020 3306.858
Algeria 2021 3765.035
Bosnia 2018 6070.353
Bosnia 2019 6119.762
Bosnia 2020 6082.367
Bosnia 2021 6916.438
Croatia 2018 15227.560
Croatia 2019 15311.767
Croatia 2020 14132.487
Croatia 2021 17398.766
uj5u.com熱心網友回復:
可以通過添加group_by
library(dplyr)
df |>
group_by(Country_Name) |>
mutate(pdiff = 100*(gdp_per_capita - lag(gdp_per_capita))/gdp_per_capita) |>
ungroup()
uj5u.com熱心網友回復:
我試過diff而不是使用lag,但基本上你需要按國家分組并進行相同的計算。我arrange去那里確定資料的順序。
library(dplyr)
df %>%
group_by(Country_Name) %>%
arrange(Country_Name, year) %>%
mutate(pdiff = 100 * c(NA, diff(gdp_per_capita) / gdp_per_capita[-1]))
# mutate(pdiff = 100 * c(NA, diff(gdp_per_capita) / gdp_per_capita[-n()]))
## better to divide by previous row, i.e. lag(gdp_per_capita)
#> # A tibble: 16 x 4
#> # Groups: Country_Name [4]
#> Country_Name year gdp_per_capita pdiff
#> <chr> <int> <dbl> <dbl>
#> 1 Albania 2018 5288. NA
#> 2 Albania 2019 5396. 2.01
#> 3 Albania 2020 5332. -1.20
#> 4 Albania 2021 6494. 17.9
#> 5 Algeria 2018 4142. NA
#> 6 Algeria 2019 3990. -3.82
#> 7 Algeria 2020 3307. -20.6
#> 8 Algeria 2021 3765. 12.2
#> 9 Bosnia 2018 6070. NA
#> 10 Bosnia 2019 6120. 0.807
#> 11 Bosnia 2020 6082. -0.615
#> 12 Bosnia 2021 6916. 12.1
#> 13 Croatia 2018 15228. NA
#> 14 Croatia 2019 15312. 0.550
#> 15 Croatia 2020 14132. -8.34
#> 16 Croatia 2021 17399. 18.8
資料:
df <- read.table(text = "Country_Name year gdp_per_capita
Albania 2018 5287.664
Albania 2019 5396.216
Albania 2020 5332.160
Albania 2021 6494.386
Algeria 2018 4142.019
Algeria 2019 3989.668
Algeria 2020 3306.858
Algeria 2021 3765.035
Bosnia 2018 6070.353
Bosnia 2019 6119.762
Bosnia 2020 6082.367
Bosnia 2021 6916.438
Croatia 2018 15227.560
Croatia 2019 15311.767
Croatia 2020 14132.487
Croatia 2021 17398.766", header = T, stringsAsFactor = F)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/534822.html
標籤:r数据框dplyr
上一篇:如何將每月資料分解為每周資料?
