这是我的样本数据:
x1 <- c(1, 2, 3, 4, 5)
x2 <- c(6, 7, 4, 5, 7)
x3 <- c(4, 5, 3, 7, 1)
x4 <- c(3, 5, 6, 4, 2)
x5 <- c(1, 3, 4, 4, 2)
x6 <- c(4, 5, 4, 3, 5)
df <- data.frame(x1 = x1, x2 = x2, x3 = x3, x4 = x4, x5 = x5, x6 = x6)
df <- df %>%
rowwise() %>%
mutate(
var1_mean = mean(c(x1, x2, x3)),
var2_mean = mean(c(x4, x5, x6))
)
我想要的是一个箱形图,在第一个框中显示var1_mean
的平均值,包括标准差,在另一个框中显示var2_mean
的平均值。下面的代码似乎可以完成这项工作,但我不确定,因为我不理解这个rep
函数。你能给我解释一下吗?我被告知,这个对象c(rep("var1_mean", nrow(df)), rep("var2_mean", nrow(df)))
是一个向量,有两个字符串var1_means
和var2_means
,每个字符串重复的次数等于df中的行数。这是否意味着,它计算上述变量的平均值和标准差?
plot_df <- data.frame(
Variable = c(rep("var1_mean", nrow(df)), rep("var2_mean", nrow(df))),
Value = c(df$var1_mean, df$var2_mean)
)
ggplot(plot_df, aes(x = Variable, y = Value, fill = Variable)) +
geom_boxplot() +
labs(x = "", y = "Mean Value") +
ggtitle("Box Plot of var1_mean and var2_mean") +
theme_minimal()
1条答案
按热度按时间juud5qan1#
rep()
中没有计算。ggplot()
输入数据通常是长格式的,在这种情况下,应该有一列包含变量名,另一列包含值;但是在df
列中,var1_mean
和var2_mean
形成宽格式子集:您提供的代码为从宽到长的转换引入了一种不太常见的方法。
rep()
只是重复(字符串)对象,另一个col中的值是从df
tibble的var1_mean
和var2_mean
列按原样复制的(不要介意不同的格式和明显的舍入,底层值仍然是相同的):由于在提供的代码中已经有一些Tidyverse的位,因此获得基本相同结果的常用方法是
tidyr::pivot_longer()
: