如何在重复测量设计中获得直方图的长格式数据得分

时间:2018-02-25 11:36:58

标签: r histogram

我使用melt()将数据从宽格式转换为长格式,并显示了我的长格式数据(df),如下所示:

Participant Tests Scores  
1 A 8  
1 B 7  
1 C 1  
1 D 6  
2 A 9  
2 B 5  
2 C 2  
2 D 5  
3 A 6  
3 B 2  
3 C 3  
3 D 8  
4 A 5  
4 B 3  
4 C 1  
4 D 9  
5 A 8  
5 B 4  
5 C 5  
5 D 8  
6 A 7  
6 B 5  
6 C 6  
6 D 7  

如何获得df$Tests[1]的所有分数(即,每个参与者在测试中= A)?

此外,如果我想绘制直方图,例如:

hist.TestA <- ggplot(df, aes(???)) + theme(legend.position = "none") + geom_histogram(aes(y=..density..), colour="black", fill="white", binwidth = 1) + labs(x="Test A", y = "Density") + stat_function(fun = dnorm, args = list(mean = mean(???, na.rm = TRUE), sd = sd(???, na.rm = TRUE)), colour = "black", size = 1)

但我不知道我在字段中写了什么“???”在上面的语法中。

提前谢谢。

最佳。

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作以获得分数或仅给出测试

的数据子集
data <- data.frame(
    Participant= c(1, 1, 1, 1, 2, 2, 2, 2),
    Tests = c("A", "B", "C", "D", "A", "B", "C", "D"),
    Scores = c(8, 7, 1, 6, 9, 5, 2, 5)
)

sub <- by(data = data, INDICES = data$Tests, FUN = c)

你对ggplot的尝试有点不清楚,但如果你想为每个测试绘制直方图,可以这样做:

hist(x = sub$A$Scores, freq = FALSE, xlab = "Scores", main = "Test A")

或与ggplot

ggplot(data, aes(x=Scores, color=Tests, fill=Tests)) +
    geom_histogram(aes(y=..density..), position="identity", alpha=0.5, bins=10)

简单的ANOVA图可以完成如下:

ggplot(data, aes(x = Tests, y = Scores)) +
  geom_boxplot(fill = "grey80", colour = "blue") +
  scale_x_discrete() + xlab("Treatment Group") +
  ylab("Dried weight of plants")

有关ANOVA和绘图的更多信息,请参阅this tutorial