我试图创建一个依赖于另一个变量值的新变量。
这就是我的数据的样子。
work <- read.table(header=T, text="ID incident
1 1 <NA>
2 2 2006
3 3 1997
4 4 <NA>
5 5 1994
6 6 1998
7 7 <NA>
8 9 <NA>
9 10 1988
10 11 <NA>")
这就是我想要的样子
read.table(header=T, text="ID Incident Incident1
1 NA 0
2 2006 0
3 1997 1
4 NA 0
5 1994 1
6 1998 0
7 NA 0
8 NA 0
9 NA 0
10 1988 1")
这意味着我想为“事件”创建一个新变量,将其称为“incident1”,如果“incident”的值小于1998,则此变量将仅取值1.
这意味着“事件”&lt; 1998中的每个值都会给出“incident1”= 1所有其他值都会收到零。
到目前为止,我已经尝试了work$incident1[work$incident %in% <1998] <- 1
,但它不起作用。
这可能是一个非常简单的问题,因为我没有写任何代码这么长时间(试图开始获利)并且有点忘记了。
感谢所有帮助!
答案 0 :(得分:2)
转换factor
变量&#34;事件&#34;在&#34;工作&#34;数据集到numeric
类(&#34; incid&#34;)。您可以as.numeric(as.character(
或as.numeric(levels(...
执行此操作,然后应用条件incid < 1998 &..
incid <- as.numeric(as.character(work$incident)
或者
incid <- with(work, as.numeric(levels(incident))[incident])
(incid < 1998 & !is.na(incid))+0
#[1] 0 0 1 0 1 0 0 0 1 0
work <- structure(list(ID = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 9L, 10L, 11L
), incident = structure(c(6L, 5L, 3L, 6L, 2L, 4L, 6L, 6L, 1L,
6L), .Label = c("1988", "1994", "1997", "1998", "2006", "<NA>"
), class = "factor")), .Names = c("ID", "incident"), class =
"data.frame", row.names = c("1",
"2", "3", "4", "5", "6", "7", "8", "9", "10"))