这是一个示例数据,我想知道如果要在R中分别对Day1,Day2 ... Day6进行盒装库存1,库存2,库存3和库存4,该怎么办?
head(StockExample)
X1 Stock1 Stock2 Stock3 Stock4
1 Day1 185.74 1.47 1605 95.05
2 Day2 184.26 1.56 1580 97.49
3 Day3 162.21 1.39 1490 88.57
4 Day4 159.04 1.43 1520 85.55
5 Day5 164.87 1.42 1550 92.04
6 Day6 162.72 1.36 1525 91.70
因此,每天有6个箱型图,每个箱型图中都有1-4个库存。希望我有道理。另外,我可以使用apply函数吗?
我试图寻找答案,但无法正确解决。感谢这方面的帮助。非常感谢!
答案 0 :(得分:0)
开发一个好的做法是“收集”库存列。像下面这样的东西应该起作用。 (但我尚未对此进行测试。)
require(tidyverse)
require(stringr)
StockExample %>%
tidyr::gather(key = "Stock", value = "value", -X1) %>%
dplyr::mutate(day = stringr::str_replace(X1, "Day", "") %>% as.numeric() ) %>%
dplyr::mutate(Stock = stringr::str_replace(Stock, "Stock", "") %>% as.numeric() ) %>%
ggplot(aes(x = day, y = value)) +
geom_boxplot()
(上面的代码使用范围packagename::functionname
来指示tidyverse中用于执行某些操作的特定功能。
答案 1 :(得分:0)
有多种方法可以执行此操作,以上两种都要求数据采用长格式。
为了重新格式化数据,我将使用软件包melt
中的函数reshape2
。
long <- reshape2::melt(StockExample, id.var = "X1")
现在显示图形。
首先,使用基本R图形。
boxplot(value ~ X1, long)
其次,使用软件包ggplot2
。
library(ggplot2)
ggplot(long, aes(X1, value)) +
geom_boxplot()
数据。
StockExample <-
structure(list(X1 = structure(1:6, .Label = c("Day1", "Day2",
"Day3", "Day4", "Day5", "Day6"), class = "factor"), Stock1 = c(185.74,
184.26, 162.21, 159.04, 164.87, 162.72), Stock2 = c(1.47, 1.56,
1.39, 1.43, 1.42, 1.36), Stock3 = c(1605L, 1580L, 1490L, 1520L,
1550L, 1525L), Stock4 = c(95.05, 97.49, 88.57, 85.55, 92.04,
91.7)), class = "data.frame", row.names = c("1", "2", "3", "4",
"5", "6"))
答案 2 :(得分:0)
您可以获取长格式的数据,然后使用.card p
{
font-size: 20px !important;
}
很简单:
ggstatsplot
由reprex package(v0.2.0.9000)创建于2018-08-26。
答案 3 :(得分:0)