我试图创建一个变量,使我能够区分my_code
中的负项和year == 2020
中的正rate
项.也就是说,在2020年利率变为负值,我的新变量是1,所有年份都是.到目前为止,我已经使用了mutate
和if_else
,如果2020年的rate
为<;0,则取值为1
,否则为0,但它只赋值
1
到那一年,利率是负值,而不是整个my_id
系列:
mydt %>% mutate(rate.sign = mutate( if_else (year == 2020 & rate < 0, 1 , 0)))
我怎么才能解决这个问题呢?
id_code variable year rate my_id new.var
<dbl> <chr> <dbl> <dbl> <dbl> <dbl>
1 233 x 1950 NA 1 0
2 233 x 1955 2.97 1 0
3 233 x 1960 2.98 1 0
4 233 x 1965 1.2 1 0
5 233 x 1970 2.01 1 0
6 233 x 1975 2.39 1 0
7 233 x 1980 2.28 1 0
8 233 x 1985 0.66 1 0
9 233 x 1990 0.66 1 0
10 233 x 1995 1.04 1 0
...
15 233 x 2020 0.81 1 0
18 233 x 1950 3.37 2 1
...
30 233 x 2010 -0.78 2 1
31 233 x 2015 -0.82 2 1
32 233 x 2020 -0.75 2 1
33 233 x 2025 -0.45 2 1
34 233 x 2030 -0.62 2 1
任何帮助都是非常感激的.
以下是简化的数据集:
mydt = structure(list(id_code = c(233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
233),
variable = c("x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x",
"x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x"),
year = c(1950, 1955, 1960, 1965, 1970, 1975, 1980, 1985, 1990, 1995, 2000, 2005, 2010, 2015, 2020, 2025, 2030, 1950, 1955, 1960, 1965, 1970, 1975, 1980, 1985, 1990, 1995, 2000, 2005, 2010, 2015, 2020, 2025, 2030),
rate = c(NA, 2.97, 2.98, 1.20, 2.01, 2.39, 2.28, 0.66, 0.66, 1.04, 0.96, 0.87, 0.86, 0.85, 0.81, 0.38, 0.58, 3.37, 2.93, 0, 2.02, 1.80, 2.37, 0, 0.72, 0.71, 1.33, 0.92, 1.06, -0.78, -0.82, -0.75, -0.45, -0.62),
my_id = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)),
class = c("grouped_df", "tbl_df", "tbl", "data.frame"), row.names = c(NA, -34L), groups = structure(list( id_code = 233, variable = "x", .rows = structure(list(1:34), ptype = integer(0), class = c("vctrs_list_of", "vctrs_vctr", "list"))), row.names = c(NA, -1L), .drop = TRUE, class = c("tbl_df", "tbl", "data.frame")))