【发布时间】:2020-07-26 03:38:08
【问题描述】:
数据框df有2个变量---第一列是id,第二列是女士英语水平(lep)。 现在,我想使用规则创建一个名为 sign 的新列----如果 lep 变量中的第一个 1 和最后一个 1 之间有零,则 sign=1,否则 sign=0。任何帮助将不胜感激!
structure(list(id = c(3831001, 3831001, 3831001, 3831001, 3831001,
3831001, 3831001, 3831001, 3831002, 3831002, 3831002, 3831002,
3831002, 3831002, 3831002, 3831002, 3831003, 3831003, 3831003,
3831003, 3831003, 3831003, 3831003, 3831003, 3831004, 3831004,
3831004, 3831004, 3831004, 3831004, 3831005, 3831005, 3831005,
3831005, 3831005, 3831005, 3831005, 3831006, 3831006, 3831006,
3831006, 3831006, 3831006, 3831007, 3831007, 3831007, 3831007,
3831007, 3831007, 3831007, 3831007), lep = c(1, 1, 1, NA, NA,
0, NA, 0, 1, 1, 0, 1, 0, 0, NA, 1, 1, 0, 0, 0, NA, 1, 0, NA,
1, 0, NA, 1, 0, NA, 1, NA, NA, 0, NA, NA, 1, 1, 0, NA, 0, 0,
0, 1, 0, 0, 0, 0, NA, NA, 1)), row.names = c(NA, -51L), groups = structure(list(
id = c(3831001, 3831002, 3831003, 3831004, 3831005, 3831006,
3831007), .rows = structure(list(1:8, 9:16, 17:24, 25:30,
31:37, 38:43, 44:51), ptype = integer(0), class = c("vctrs_list_of",
"vctrs_vctr", "list"))), row.names = c(NA, 7L), class = c("tbl_df",
"tbl", "data.frame"), .drop = TRUE), class = c("grouped_df",
"tbl_df", "tbl", "data.frame"))->df
#.The expected result is as follows,
id lep sign
3831001 1 0
3831001 1 0
3831001 1 0
3831001 NA 0
3831001 NA 0
3831001 0 0
3831001 NA 0
3831001 0 0
3831002 1 1
3831002 0 1
3831002 0 1
3831002 1 1
3831002 0 1
3831002 0 1
3831002 NA 1
3831002 1 1
...............
3831006 1 0
3831006 0 0
3831006 NA 0
3831006 0 0
3831006 0 0
3831006 0 0
3831007 1 1
3831007 0 1
3831007 0 1
3831007 0 1
3831007 0 1
3831007 NA 1
3831007 NA 1
3831007 1 1
【问题讨论】:
-
我对这两个答案都很满意。然而,似乎所有候选人中只有一个选择,让提问者很尴尬。
标签: r