r - dplyr 滞后默认 0 错误
r - dplyr lag default 0 error
我在使用 lag
函数时遇到问题 (dplyr
)
当设置 default = 0
dta %>%
group_by(id) %>%
mutate(mLag = value.x == lag(value.y, default = 0) )
我得到 TRUE/FALSE
而不是 0-1
。
但是,当我以这种方式使用 lag
时,我得到了我想要的输出:
lag(dta$value.x == dta$value.y, default = 0)
0 1 1 1 0 1 1 0 1 1 1 1 0 1 1
知道如何解决这个问题吗?
谢谢
数据
dta = structure(list(id = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L), variable = structure(1:15, .Label = c("08:00",
"08:15", "08:30", "08:45", "09:00", "09:15", "09:30", "09:45",
"10:00", "10:15", "10:30", "10:45", "11:00", "11:15", "11:30",
"11:45", "12:00", "12:15", "12:30", "12:45", "13:00", "13:15",
"13:30", "13:45", "14:00", "14:15", "14:30", "14:45", "15:00",
"15:15", "15:30", "15:45", "16:00", "16:15", "16:30", "16:45",
"17:00", "17:15", "17:30", "17:45", "18:00", "18:15", "18:30",
"18:45", "19:00", "19:15", "19:30", "19:45", "20:00", "20:15",
"20:30", "20:45", "21:00", "21:15", "21:30", "21:45"), class = "factor"),
sex.x = c("m", "m", "m", "m", "m", "m", "m", "m", "m", "m",
"m", "m", "m", "m", "m"), value.x = c("partner", "partner",
"partner", "partner", "alone", "alone", "nuclear", "nuclear",
"nuclear", "nuclear", "nuclear", "children", "children",
"children", "children"), sex.y = c("f", "f", "f", "f", "f",
"f", "f", "f", "f", "f", "f", "f", "f", "f", "f"), value.y = c("partner",
"partner", "partner", "alone", "alone", "alone", "children",
"nuclear", "nuclear", "nuclear", "nuclear", "nuclear", "children",
"children", "children")), .Names = c("id", "variable", "sex.x",
"value.x", "sex.y", "value.y"), row.names = c(NA, 15L), class = "data.frame")
我认为您可能放错了 lhs value.x ==
。它应该放在 lag()
函数中。
这个好像可以。
group_by(dta, id) %>%
mutate(mLag = lag(value.x == value.y, default = 0))
# Source: local data frame [15 x 7]
# Groups: id
#
# id variable sex.x value.x sex.y value.y mLag
# 1 1 08:00 m partner f partner 0
# 2 1 08:15 m partner f partner 1
# 3 1 08:30 m partner f partner 1
# 4 1 08:45 m partner f alone 1
# 5 1 09:00 m alone f alone 0
# 6 1 09:15 m alone f alone 1
# 7 1 09:30 m nuclear f children 1
# 8 1 09:45 m nuclear f nuclear 0
# 9 1 10:00 m nuclear f nuclear 1
# 10 1 10:15 m nuclear f nuclear 1
# 11 1 10:30 m nuclear f nuclear 1
# 12 1 10:45 m children f nuclear 1
# 13 1 11:00 m children f children 0
# 14 1 11:15 m children f children 1
# 15 1 11:30 m children f children 1
我在使用 lag
函数时遇到问题 (dplyr
)
当设置 default = 0
dta %>%
group_by(id) %>%
mutate(mLag = value.x == lag(value.y, default = 0) )
我得到 TRUE/FALSE
而不是 0-1
。
但是,当我以这种方式使用 lag
时,我得到了我想要的输出:
lag(dta$value.x == dta$value.y, default = 0)
0 1 1 1 0 1 1 0 1 1 1 1 0 1 1
知道如何解决这个问题吗?
谢谢
数据
dta = structure(list(id = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L), variable = structure(1:15, .Label = c("08:00",
"08:15", "08:30", "08:45", "09:00", "09:15", "09:30", "09:45",
"10:00", "10:15", "10:30", "10:45", "11:00", "11:15", "11:30",
"11:45", "12:00", "12:15", "12:30", "12:45", "13:00", "13:15",
"13:30", "13:45", "14:00", "14:15", "14:30", "14:45", "15:00",
"15:15", "15:30", "15:45", "16:00", "16:15", "16:30", "16:45",
"17:00", "17:15", "17:30", "17:45", "18:00", "18:15", "18:30",
"18:45", "19:00", "19:15", "19:30", "19:45", "20:00", "20:15",
"20:30", "20:45", "21:00", "21:15", "21:30", "21:45"), class = "factor"),
sex.x = c("m", "m", "m", "m", "m", "m", "m", "m", "m", "m",
"m", "m", "m", "m", "m"), value.x = c("partner", "partner",
"partner", "partner", "alone", "alone", "nuclear", "nuclear",
"nuclear", "nuclear", "nuclear", "children", "children",
"children", "children"), sex.y = c("f", "f", "f", "f", "f",
"f", "f", "f", "f", "f", "f", "f", "f", "f", "f"), value.y = c("partner",
"partner", "partner", "alone", "alone", "alone", "children",
"nuclear", "nuclear", "nuclear", "nuclear", "nuclear", "children",
"children", "children")), .Names = c("id", "variable", "sex.x",
"value.x", "sex.y", "value.y"), row.names = c(NA, 15L), class = "data.frame")
我认为您可能放错了 lhs value.x ==
。它应该放在 lag()
函数中。
这个好像可以。
group_by(dta, id) %>%
mutate(mLag = lag(value.x == value.y, default = 0))
# Source: local data frame [15 x 7]
# Groups: id
#
# id variable sex.x value.x sex.y value.y mLag
# 1 1 08:00 m partner f partner 0
# 2 1 08:15 m partner f partner 1
# 3 1 08:30 m partner f partner 1
# 4 1 08:45 m partner f alone 1
# 5 1 09:00 m alone f alone 0
# 6 1 09:15 m alone f alone 1
# 7 1 09:30 m nuclear f children 1
# 8 1 09:45 m nuclear f nuclear 0
# 9 1 10:00 m nuclear f nuclear 1
# 10 1 10:15 m nuclear f nuclear 1
# 11 1 10:30 m nuclear f nuclear 1
# 12 1 10:45 m children f nuclear 1
# 13 1 11:00 m children f children 0
# 14 1 11:15 m children f children 1
# 15 1 11:30 m children f children 1