我是R的新手,在解决此问题时遇到了一些麻烦。
我有以下表格/数据框:
我正在尝试生成一个像这样的箱线图:
但是,我希望根据标签1000、2000、5000等对x轴进行缩放。
因此,我希望1000和2000之间的距离与50000和100000之间的距离不同,因为确切的距离并不相同。 可以在R中这样做吗?
谢谢大家,祝您有愉快的一天!
答案 0 :(得分:0)
也许尝试将数据集转换为这种格式,即列中的整数而不是标题标题?
# packages
library(ggplot2)
library(reshape2)
# data in ideal format
dt <- data.frame(x=rep(c(1,10,100), each=5),
y=runif(15))
# data that we have. Use reshape2::dcast to get data in to this format
dt$id <- rep(1:5, 3)
dt_orig <- dcast(dt, id~x, value.var = "y")
dt_orig$id <- NULL
names(dt_orig) <- paste0("X", names(dt_orig))
# lets get back to dt, the ideal format :)
# melt puts it in (variable, value) form. Need to configure variable column
dt2 <- melt(dt_orig)
# firstly, remove X from the string
dt2$variable <- gsub("X", "", dt2$variable)
# almost there, can see we have a character, but need it to be an integer
class(dt2$variable)
dt2$variable <- as.integer(dt2$variable)
# boxplot with variable X axis
ggplot(dt2, aes(x=variable, y=value, group=variable)) + geom_boxplot() + theme_minimal()
重塑数据的基本方法:https://www.statmethods.net/management/reshape.html