如何根据R中因子的级别组合两个变量

时间:2014-01-28 16:43:50

标签: r variables factors

我正在努力解决一个可能非常基本的问题,但我无法找到解决方案。我非常感谢任何帮助。

我有一个包含两个变量的数据框,我想在同一个变量中合并。数据框看起来像这样:

    id <- 1:6
    color <- c(rep("red", 3), "blue", "red", "blue")
    value2 <- 20:25
    value1 <- 25:30
    wanted_outcome <- c(25,26,27,23,29,25)
    data_sample <- data.frame(id, color, value1, value2, wanted_outcome)
    data_sample

      id color value1 value2     wanted_outcome
   1  1   red     25     20             25
   2  2   red     26     21             26
   3  3   red     27     22             27
   4  4  blue     28     23             23
   5  5   red     29     24             29
   6  6  blue     30     25             25

我想要的结果是在最后一栏。基本上我想创建一个新变量,它包含红色项的变量value1和蓝色项的value2的值。

这是我正在尝试的,但是,它没有产生所需的结果,因为R正在替换从第一个开始而不是逐行的值。

   data_sample$value_combined[color=="red"] <- value1
   data_sample$value_combined[color=="blue"] <- value2

   data_sample

   id    color value1 value2     wanted_outcome value_combined
   1  1   red     25     20             25             25
   2  2   red     26     21             26             26
   3  3   red     27     22             27             27
   4  4  blue     28     23             23             20
   5  5   red     29     24             29             28
   6  6  blue     30     25             25             21

任何帮助将不胜感激。提前致谢。

1 个答案:

答案 0 :(得分:4)

使用ifelse(缓慢但容易):

data_sample <- transform(data_sample, 
                         wanted = ifelse(color == "red", 
                                         value1, 
                                         ifelse(color == "blue", 
                                                value2, 
                                                NA)))

data_sample <- transform(data_sample, 
                         wanted = ifelse(color == "red", 
                                         value1, 
                                         value2))

如果只有那两种颜色。