我有一个包含多个虚拟变量的data.frame。它们属于不同的类别,比如颜色和形状。因此,一个假人可能被称为“红色”,另一个“椭圆”等等。最终,我想将这些类别相互映射以找到依赖关系。要做到这一点,首先我必须从几个虚拟变量中创建分类变量。还必须允许这些变量同时呈现多个表现形式(例如,一个对象可能不仅仅有一种颜色,而是两种或三种颜色)。
其次,我想知道是否有办法在一个虚拟变量中组合多个虚拟变量,而不是添加它们,但是当至少有一个值≠0时,只显示“1”。
感谢您的帮助!
答案 0 :(得分:0)
这样的东西?
red <- c(1,1,0,0,1,1)
green <- c(0,0,1,1,0,1)
blue <- c(0,0,0,1,1,1)
df <- data.frame(red,green,blue)
df
## red green blue
## 1 1 0 0
## 2 1 0 0
## 3 0 1 0
## 4 0 1 1
## 5 1 0 1
## 6 1 1 1
如果你想能够将它们组合起来,它会变得有点混乱......
df$redtxt <- ifelse(red==1,"Red","")
df$greentxt <- ifelse(green==1,"Green","")
df$bluetxt <- ifelse(blue==1,"Blue","")
df$all_colors <- with(df, paste0(redtxt,greentxt,bluetxt))
df
## red green blue redtxt greentxt bluetxt all_colors
## 1 1 0 0 Red Red
## 2 1 0 0 Red Red
## 3 0 1 0 Green Green
## 4 0 1 1 Green Blue GreenBlue
## 5 1 0 1 Red Blue RedBlue
## 6 1 1 1 Red Green Blue RedGreenBlue
...但您需要的所有信息都在df$all_colors
。
对于你的第二个问题,有很多方法可以达到目标,但这可行...
buncha_dummies <- data.frame(x1=c(0,0,0,1,1),x2=c(0,1,0,1,0),x3=c(0,0,0,0,1))
buncha_dummies$ANY_1 <- with(buncha_dummies, 1*(x1==1 | x2==1 | x3==1))
buncha_dummies
## x1 x2 x3 ANY_1
## 1 0 0 0 0
## 2 0 1 0 1
## 3 0 0 0 0
## 4 1 1 0 1
## 5 1 0 1 1