来自多个字符串变量的二进制变量

时间:2014-11-24 19:36:51

标签: r string binary

在具有>的数据集(df)内600个观察值和100个变量,我有一个具有多个特征的变量,其形式如下所示:

df$a
   a
1 aa
2 bb
3 aa
4 cc
5 bb
6 dd
7 cc
8 dd

现在,我想从a计算一个新的二进制变量,其中所有"aa""bb"得到值0,所有"cc"和{{1得到值1.我期待类似的东西:

"dd"

我该怎么做?

非常感谢您提供任何帮助。

马格努斯

3 个答案:

答案 0 :(得分:3)

通用解决方案:构建密钥(或"字典")。

> key <- c("aa" = 0, "bb" = 0, "cc" = 1, "dd" = 1)
> key[a]
aa bb aa cc bb dd cc dd 
0  0  0  1  0  1  1  1 

答案 1 :(得分:0)

我将使用逻辑测试进行子集化并运行类似:

a <- c("aa", "bb", "aa", "cc", "bb", "dd", "cc", "dd")
a[a == "aa"] <- 0
a[a == "bb"] <- 0
a[a == "cc"] <- 1
a[a == "dd"] <- 1
a <- data.frame(a)
a

答案 2 :(得分:0)

有很多方法,其中之一就是使用来自包车的重新编码

dat1 <- data.frame(a=c("aa", "bb", "aa", "cc", "bb", "dd", "cc", "dd"))
dat2 <- transform(dat1, b=car::recode(a,"c('aa','bb')=0;c('cc','dd')=1;else=NA",as.factor.result=FALSE))

> dat2
   a b
1 aa 0
2 bb 0
3 aa 0
4 cc 1
5 bb 0
6 dd 1
7 cc 1
8 dd 1