xyplot()
中,R通过字母顺序(对于字符串)或水平顺序(对于因子)来确定面板的顺序。我有一些日期数据,但它们是以文本形式存在的,我希望按照时间顺序而不是字母顺序显示它们。
x <- sample(1:10, 10, replace = TRUE)
y <- sample(1:10, 10, replace = TRUE)
# overlapping 2010 and 2011
date <- rep(as.Date("2010-01-01") + sort(sample(200:400, 5)), each = 2)
striptext <- format(date, "%d-%b ...")
df <- data.frame(x, y, date, striptext)
这个很好用:
xyplot(y ~ x | date, data = df)
但这会使日期顺序颠倒:
xyplot(y ~ x | striptext, data = df)
我不想在条带中显示完整日期,但是我希望它们按正确的顺序显示。除了将 striptext
转换为有序因子之外,是否还有其他解决方案?
striptext
在xyplot
内被强制转换为因子,如果没有提供levels
,则结果因子的级别按字母顺序排列。考虑使用levels(factor(striptext))
和levels(factor(striptext, levels = unique(striptext)))
。你的问题的真正答案是先将你的条件变量设置为一个因子,并按照你想要的方式排序级别。 - Gavin Simpson