在具有>的数据集(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"
我该怎么做?
非常感谢您提供任何帮助。
马格努斯
答案 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