繁体   English   中英

从因子生成二分变量

[英]Generate a dichotomous variable from a factor

我有一个带有因子的数据帧,例如:

> var1 <- gl(10, 2, labels=letters[1:10])
> var2 <- c(1:20)
> data <- data.frame(var1=var1,var2=var2)
> data
   var1 var2
1     a    1
2     a    2
3     b    3
4     b    4
5     c    5
6     c    6
7     d    7
...
20    j   20

我正在尝试为var1特定值生成一个定义为1和0的二分变量。 但是,当我输入以下代码时:

> data <- data.frame(var1=var1,var2=var2)
> data$var3 <- c(1[which(var1=="a" | var1=="b" | var1=="c" | var1=="d" | 
var1=="e")], 0[which(var1=="f" | var1=="g" | var1=="h" | var1=="i" | var1=="j")])

我得到以下内容:

> data$var3
 [1]  1 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA

第一项更改为1,但其余项成为NA。 我怎样才能获得我想要的结果?

我不确定我是否理解你希望代码如何运行,但似乎你只想为var1中的值a,b,c,d或e和0创建一个向量1对于其余的。 如果是这种情况,那么只需使用%in% ,这将创建一个逻辑向量,并将其包装在as.numeric以将其转换为1和0。

例:

data$var3 <- as.numeric(data$var1 %in% c("a", "b", "c", "d", "e"))
## Or, shorter:
## data$var3 <- as.numeric(data$var1 %in% letters[1:5])

> head(data, 3)
  var1 var2 var3
1    a    1    1
2    a    2    1
3    b    3    1
> tail(data, 3)
   var1 var2 var3
18    i   18    0
19    j   19    0
20    j   20    0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM