【发布时间】:2020-06-02 22:48:35
【问题描述】:
我有这样的数据。
data.input <-read_table2("user.id problem.id first.correct cwa_prob prob.seq
540995 PRABNBZQ 0 1 problem.id.problem.1
540995 PRABNBZ2 1 0 problem.id.problem.2
540995 PRABNBZK 0 1 problem.id.problem.3
540995 PRABNB2B 0 1 problem.id.problem.4
540995 PRABNBWE 0 1 problem.id.problem.5
565662 PRABNB2B 1 0 problem.id.problem.1
565662 PRABNBZQ 1 1 problem.id.problem.2
565662 PRABNBZ9 1 0 problem.id.problem.3
565662 PRABNBZV 1 0 problem.id.problem.4
565662 PRABNBWG 1 0 problem.id.problem.5
")
我正在尝试使用 lag 函数来比较两个单独列中出现的标志。我想看看一个人如何按顺序从一个问题到下一个问题。具体来说,如果cwa_prob对于problem.id.problem.1(用户540995)是1,是不是problem.id.problem.2(用户540995)中的first.correct==1。
我尝试了类似的方法,但它引发了错误。
input.data %>%
group_by(user.id) %>%
mutate(post.cwa.correct=ifelse(cwa_prob==1 & lag(first.correct==1),1,0))
我希望我的输出看起来像这样:
data.output <-read_table2("user.id problem.id first.correct cwa_prob prob.seq post.cwa.correct
540995 PRABNBZQ 0 1 problem.id.problem.1 NA
540995 PRABNBZ2 1 0 problem.id.problem.2 1
540995 PRABNBZK 0 1 problem.id.problem.3 NA
540995 PRABNB2B 0 1 problem.id.problem.4 0
540995 PRABNBWE 0 1 problem.id.problem.5 0
565662 PRABNB2B 1 0 problem.id.problem.1 1
565662 PRABNBZQ 1 1 problem.id.problem.2 NA
565662 PRABNBZ9 1 0 problem.id.problem.3 1
565662 PRABNBZV 1 0 problem.id.problem.4 NA
565662 PRABNBWG 1 0 problem.id.problem.5 NA
")
也许滞后函数不是最好的函数?任何帮助表示赞赏!
【问题讨论】:
-
你得到什么错误?