首页 > 解决方案 > 从具有因子的列到具有 0、1 的两个不同列

问题描述

我在数据框中有一列 group1 group 2 。

group <- c( "group1", "group1", "group2", "group1", "group2"  )
value<- c(1:5)
dat <- data.frame(value, group)

我想变成这样-

group1 <- c(1, 1, 0, 1, 0)
group2 <- c(0, 0, 1, 0, 1)
dat<- data.frame(value, group1, group2)

我试过了,但稍后必须删除组列

dat<-  dat %>%   
        mutate( group1 = ifelse(data1$group =="group1", 1, 0 ),
                group2 = ifelse(data1$group =="group2", 1, 0 ) )

有没有其他好方法来完成这项工作。

在此先感谢您的帮助。

标签: r

解决方案


使用基本 R 选项reshape

replace(
  out <- reshape(
    cbind(dat, q = 1),
    direction = "wide",
    idvar = "value",
    timevar = "group"
  ),
  is.na(out),
  0
)

给予

  value q.group1 q.group2
1     1        1        0
2     2        1        0
3     3        0        1
4     4        1        0
5     5        0        1

推荐阅读