我使用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)
但我不知道我在字段中写了什么“???”在上面的语法中。
提前谢谢。
最佳。
答案 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