【发布时间】:2017-12-17 06:05:32
【问题描述】:
很抱歉没有提供数据。以下是一些示例数据:
PERCENT <- rnorm(100, sd = 3)
YEAR <- sample(c(1950, 1958, 1963, 1974, 1982, 1994), 100, replace = TRUE)
AGE <- sample(c(18:90), 100, replace = TRUE)
COUNTRY <- rep(c("Country A", "Country B"), 50)
df <- data.frame(PERCENT, YEAR, AGE, COUNTRY)
我正在尝试随着时间的推移跟踪年龄段。为此,我想给每个案例一个他们年龄组的唯一 ID。我知道如何手动执行此操作,如下所示:
df %>%
filter(AGE >= 18 & AGE <= 27, YEAR == 1950 |
AGE >= 26 & AGE <= 36, YEAR == 1958 |
AGE >= 31 & AGE <= 40, YEAR == 1963 |
AGE >= 42 & AGE <= 51, YEAR == 1974 |
AGE >= 50 & AGE <= 59, YEAR == 1982 |
AGE >= 60 & AGE <= 69, YEAR == 1994) %>%
mutate(COHORT_ID = "18-27 in 1950")
但要为多个年龄组执行此操作需要大量输入。我正在尝试做一个循环或函数,它为 t 年 x 和 y 岁之间的所有人以及 t+u 年 x+u 到 y+u 的所有人分配一个群组标签。
我尝试做一个函数,它将最小年龄向量、最大年龄向量和调查波年份向量作为参数,并将标签添加到数据框中的新列。
这是我到目前为止的想法:
function(xmin, xmax, year) {
df$cohort <- 0, #to initialize the column
### here the magic happens
}
我查看了this 页面,但他们似乎在谈论其他事情。
如果有一种有效的方法可以在不使用函数的情况下做到这一点,我将同样感激!提前致谢!
编辑:我刚刚意识到每个观察结果都可以分为几个队列类别,因为年龄范围(10 岁)和调查波(不规则间隔)没有对齐。每个同类群组 ID 的虚拟变量会解决这个问题吗?
【问题讨论】:
-
你的数据是什么样的?为什么年份是字符串而不是数字?您可以从年份中减去年龄,这样您就可以得到可能在一定范围内的出生年份并使用它来分配队列
标签: r function functional-programming