如何根据其他列分配自定义因子?

时间:2014-08-14 09:47:45

标签: r

我有这样的数据:

k <- data.frame(v=c(1:4),
                days=c("m", "m", "s", "m"),
                weekend=c(F, F, T, F)
     )

假设m是星期一,s是星期六,所以s行是周末。

如何创建因子变量weekendfactor,以便

> k
  v days   end weekendfactor
1 1    m FALSE       Weekday
2 2    m FALSE       Weekday
3 3    s  TRUE       Weekend
4 4    m FALSE       Weekday

我想它以某种方式涉及gl函数,但我无法理解它(我的思想是在if语句中工作。)

3 个答案:

答案 0 :(得分:2)

代码:

library("car")
recode(k$days, "'m'='Weekday';'s'='Weekend'")

结果:

> k
  v days weekend weekendFactor
1 1    m   FALSE       Weekday
2 2    m   FALSE       Weekday
3 3    s    TRUE       Weekend
4 4    m   FALSE       Weekday

由于您已经拥有weekend列,因此您也可以这样做:

ifelse(k$weekend, "Weekend", "Weekday")

产生相同的结果(除了它将是“字符”而非“因子”类)。

答案 1 :(得分:2)

另一种方式(因为我讨厌ifelse)将是

c("Weekday", "Weekend")[k$weekend + 1]
# [1] "Weekday" "Weekday" "Weekend" "Weekday"

答案 2 :(得分:1)

或者,

as.character(factor(k$days, labels=c("Weekday", "Weekend")))
#[1] "Weekday" "Weekday" "Weekend" "Weekday"