我必须构造一个参考表来跟踪学生在当前日期应获得的学分。每个入场和课程我都有一行。
我想编写一个 finished 变量,该变量在每个入学回合中将最后一门课程的值设为1,将其他值设为0(这将使我与应该完成课程的学生打交道)已经)。
我写
ekon_program<-ekon_program%>%mutate(finished=ifelse(lead(kull)=kull,0,1))
其中 kull 是我的入场回合变量,它将直接在当前入场回合的最后一个路线之后的行中以+1更改。奇怪的是,每个入学回合的最后一道课现在被编码为“ NA”,但所有其他值都被编码为0。
我可以通过将所有NA值都转换为1来轻松地纠正此问题,但是为什么会首先发生这种情况?
数据摘录:
ekon_program <- structure(list(sd = structure(c(17042, 17042, 17042, 17042, 17042,
17042, 17042, 17042, 17042, 17042, 17042, 17042, 17042, 17042,
17406, 17406, 17406, 17406, 17406, 17406), class = "Date"), points_ekon = c(15,
15, 15, 15, 7.5, 7.5, 15, 7.5, 7.5, 15, 15, 15, 30, 0, 15, 15,
15, 15, 7.5, 7.5), summer_break_ekon = c(0, 0, 0, 0, 1, 1, 1,
1, 1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1), weeks_course = c(10,
10, 10, 10, 5, 5, 10, 5, 5, 10, 10, 10, 20, 0, 10, 10, 10, 10,
5, 5), points_expected = c(0, 15, 30, 45, 60, 67.5, 75, 90, 97.5,
105, 120, 135, 150, 180, 0, 15, 30, 45, 60, 67.5), order = c(1L,
2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 1L,
2L, 3L, 4L, 5L, 6L), starttermin = c(1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0), kull = c(1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2), start_date = structure(c(17041,
17041, 17041, 17041, 17041, 17041, 17041, 17041, 17041, 17041,
17041, 17041, 17041, 17041, 17405, 17405, 17405, 17405, 17405,
17405), class = "Date"), start_date_points = structure(c(17041,
17132, 17202, 17272, 17342, 17461, 17496, 17566, 17601, 17636,
17706, 17860, 17930, 18070, 17405, 17496, 17566, 17636, 17706,
17825), class = "Date"), end_date_points = structure(c(17131,
17201, 17271, 17341, 17460, 17495, 17565, 17600, 17635, 17705,
17859, 17929, 18069, 18069, 17495, 17565, 17635, 17705, 17824,
17859), class = "Date"), finished_date = structure(c(18070, 18070,
18070, 18070, 18070, 18070, 18070, 18070, 18070, 18070, 18070,
18070, 18070, 18070, 18434, 18434, 18434, 18434, 18434, 18434
), class = "Date")), class = c("grouped_df", "tbl_df", "tbl",
"data.frame"), row.names = c(NA, -20L), groups = structure(list(
start_date = structure(c(17041, 17405), class = "Date"),
.rows = list(1:14, 15:20)), row.names = c(NA, -2L), class = c("tbl_df",
"tbl", "data.frame"), .drop = TRUE))
答案 0 :(得分:2)
一个问题是=
不是==
,其次,lead
的{{1}}在结尾处创建一个default
,如果需要更改,更改NA
。另外,我们不需要default
来强制,可以使用ifelse
as.integer