使另一个变量依赖于另一个变量的值

时间:2015-01-20 19:09:01

标签: r variables frame

我试图创建一个依赖于另一个变量值的新变量。

这就是我的数据的样子。

 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,但它不起作用。

这可能是一个非常简单的问题,因为我没有写任何代码这么长时间(试图开始获利)并且有点忘记了。

感谢所有帮助!

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"))