gpt4 book ai didi

r - 如何计算 R 表格中的百分比差异

转载 作者:行者123 更新时间:2023-12-02 03:17:12 25 4
gpt4 key购买 nike

我有一个 csv 文件,其中 1-5 行代表一个状态,5-10 代表另一个状态,等等...我也有为每个州重复包含年份 1970,1980,..,2010 的列。在 R 中(尽管我不反对在 Excel 中使用更简单的解决方案),我希望每个州计算该年与 1970 年之间的百分比差异,即 Alabama 1990 它将是 (AL 1990 - AL 1970)/(AL 1970),并将其添加到数据表中的新列中,以便我可以将其导出到 csv.

   State, Year, Num  
AL, 1970, 1
AL, 1980, 2
AL, 1990, 3
AL, 2000, 4
AL, 2010, 6

输出将是一列

pct_change
0
1
2
3
5

最佳答案

dplyr 包包含函数first,它提供了一种获取组第一个值的简单方法。因此,如果我们按 Year 排列,使 1970 成为每个组的第一个值,当我们 group_by(State) 时,我们可以使用 first( Num) 获取 Num 的第一个值,它代表 1970 年的值:

# Example data with 2 states

df <- structure(list(State = c("AL", "AL", "AL", "AL", "AL", "TX",
"TX", "TX", "TX", "TX"), Year = c(1970L, 1980L, 1990L, 2000L,
2010L, 1970L, 1980L, 1990L, 2000L, 2010L), Num = c(1, 2, 3, 4,
6, 5, 2, 10, 12, 6)), class = "data.frame", row.names = c(NA,
-10L))


library(dplyr)
df %>%
arrange(State, Year) %>%
group_by(State) %>%
mutate(perc_diff = 100 * (Num - first(Num))/first(Num))

# A tibble: 10 x 4
# Groups: State [2]
State Year Num perc_diff
<chr> <int> <dbl> <dbl>
1 AL 1970 1 0
2 AL 1980 2 100
3 AL 1990 3 200
4 AL 2000 4 300
5 AL 2010 6 500
6 TX 1970 5 0
7 TX 1980 2 -60
8 TX 1990 10 100
9 TX 2000 12 140
10 TX 2010 6 20

关于r - 如何计算 R 表格中的百分比差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55797958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com