【发布时间】:2020-05-20 21:00:12
【问题描述】:
我正在研究一个福利工资补贴计划的数据集,其中每个工人的工资结构如下:
df <- structure(list(wage_1990 = c(13451.67, 45000, 10301.67, NA, NA,
8726.67, 11952.5, NA, NA, 7140, NA, NA, 10301.67, 7303.33, NA,
NA, 9881.67, 5483.33, 12868.33, 9321.67), wage_1991 = c(13451.67,
45000, 10301.67, NA, NA, 8750, 11952.5, NA, NA, 7140, NA, NA,
10301.67, 7303.33, NA, NA, 9881.67, 5483.33, 12868.33, 9321.67
), wage_1992 = c(13451.67, 49500, 10301.67, NA, NA, 8750, 11952.5,
NA, NA, 7140, NA, NA, 10301.67, 7303.33, NA, NA, 9881.67, NA,
12868.33, 9321.67), wage_1993 = c(NA, NA, 10301.67, NA, NA, 8750,
11958.33, NA, NA, 7140, NA, NA, 10301.67, 7303.33, NA, NA, 9881.67,
NA, NA, 9321.67), wage_1994 = c(NA, NA, 10301.67, NA, NA, 8948.33,
11958.33, NA, NA, 7140, NA, NA, 10301.67, 7303.33, NA, NA, 9881.67,
NA, NA, 9321.67), wage_1995 = c(NA, NA, 10301.67, NA, NA, 8948.33,
11958.33, NA, NA, 7140, NA, NA, 10301.67, 7303.33, NA, NA, 9881.67,
NA, NA, 9321.67), wage_1996 = c(NA, NA, 10301.67, NA, NA, 8948.33,
11958.33, NA, NA, 7291.67, NA, NA, 10301.67, 7303.33, NA, NA,
9881.67, NA, NA, 9321.67)), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -20L))
我尝试了一种建议的解决方案,它在上述代码之后运行此代码:
average_growth_rate <- apply(df, 1, function(x) {
x1 <- x[!is.na(x)]
mean(x1[-1]/x1[-length(x1)]-1)})
out <- data.frame(rowid = seq_len(nrow(df)), average_growth_rate)
out[!is.na(out$average_growth_rate),]
但我不断收到此错误:
dim(X)
我想做以下事情:1-创建一个变量,显示每个工人的工资年增长率或缺乏。
我面临的实际问题是,每个观察都排成一行,而第一个工人在 1990 年加入该计划,其他人可能在 1993 年或 1992 年加入。因此,有没有办法应用增长率根据每个工人工作的具体年份,而不是对所有观察结果应用通用增长公式?
我对每一行的预期输出将是一个新列
average wage growth rate
1- 15%
2- 9%
3- 12%
运行以下代码查看我感兴趣的变量的描述性统计数据后:
skim(df$average_growth_rate)
我得到以下结果:
"Variable contains Inf or -Inf value(s) that were converted to NA.── Data Summary ────────────────────────
Values
Name gosi_beneficiary_growth$a...
Number of rows 3671
Number of columns 1
_______________________
Column type frequency:
numeric 1
________________________
Group variables None
── Variable type: numeric ──────────────────────────────────────────────────────────────────────────────
skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
1 data 1348 0.633 Inf Inf -1 -0.450 0 0.0568
"
我不确定为什么我的平均值和标准差值是 Inf。
【问题讨论】:
-
你的预期输出是什么
-
好问题,我已经编辑了我的帖子。让我知道这是否有帮助。
-
您能解释一下您是如何达到第一行的 15% 的吗?
-
只是一个假设的例子,不是基于数据...更多关于我希望最终输出的样子
标签: r dataframe dplyr data.table tidyverse