我有这样的数据:
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
语句中工作。)
答案 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"