如何在R

时间:2018-11-14 11:29:34

标签: r boxplot

我是R的新手,在解决此问题时遇到了一些麻烦。

我有以下表格/数据框:

enter image description here

我正在尝试生成一个像这样的箱线图:

enter image description here

但是,我希望根据标签1000、2000、5000等对x轴进行缩放。

因此,我希望1000和2000之间的距离与50000和100000之间的距离不同,因为确切的距离并不相同。 可以在R中这样做吗?

谢谢大家,祝您有愉快的一天!

1 个答案:

答案 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