结合两个(布尔)分类因子两个新的

Nic*_*aki 0 r

给定两个布尔分类因子,我如何将它们的组合作为第三类?

> my_data <- data.frame(a = c(0, 0, 1, 1, 1),
                        b = c(0, 1, 0, 1, 1))
> my_data
  a b
1 0 0
2 0 1
3 1 0
4 1 1
5 1 1
Run Code Online (Sandbox Code Playgroud)

我想添加一个新类别,结合使用a和b,以便:

> my_data
  a b c
1 0 0 1
2 0 1 2
3 1 0 3
4 1 1 4
5 1 1 4
Run Code Online (Sandbox Code Playgroud)

我不想懒惰,为自己考虑一下:

my_data$c <- as.numeric(as.factor(my_data$a + 1 + (my_data$b + 1) * 2))
Run Code Online (Sandbox Code Playgroud)

这很接近,但我发现它并不特别优雅.因此,可以理解基础R中的任何更好的解决方案.肯定还有喜欢reshape2提供类似功能的软件包.

sin*_*dur 6

对于您提供的所有案例,以下逻辑似乎已足够.

my_data$c <- with(my_data, 2*a + b + 1)

my_data
  a b c
1 0 0 1
2 0 1 2
3 1 0 3
4 1 1 4
5 1 1 4
Run Code Online (Sandbox Code Playgroud)