【发布时间】:2014-11-17 05:47:37
【问题描述】:
假设我有一个包含 5 列的 R 数据框,如下所示
time MeanVar1 SdVar1 MedianVar1 MeanVar2 SdVar2
1 -0.8453978 -1.636985 -0.6239832 -0.4366982 -1.7037374
2 -0.3000778 -1.034199 0.3292459 -0.6606399 -0.1525361
有没有一种简洁的方法可以使dataFrame如下:
Var time Mean/Median SD
1 1 -0.8453978 -1.636985
1 2 -0.3000778 -1.034199
1 1 -0.6239832 N/A
1 2 0.3292459 N/A
2 1 -0.4366982 -1.7037374
2 2 -0.6606399 -0.1525361
或
Var time Mean/Median SD
MeanVar1 1 -0.8453978 -1.636985
MeanVar1 2 -0.3000778 -1.034199
MeanVar1 1 -0.6239832 N/A
MeanVar1 2 0.3292459 N/A
MeanVar2 1 -0.4366982 -1.7037374
MeanVar2 2 -0.6606399 -0.1525361
我的总体意图是在同一个图中用误差线、变量 1 的中值和变量 1 的平均值、标准差绘制变量 1 的均值、标准差。因此,我觉得如果我把数据修改成这样的格式,我可以一次绘制,而不是单独绘制每一行。
由于我对重塑和融化的了解有限,我无法做到这一点。
编辑:添加更多信息
示例输入(给定 3 行,总共有 100 行):
Label trainingSize Accuracy_Mean Accuracy_SD Accuracy_SE Precision_Mean Recall_Mean F1 Accuracy_Median PriorClass0_Mean PriorClass0_SD PriorClass0_SE ProbabilityEstimate_0given0_Mean ProbabilityEstimate_0given0_SD ProbabilityEstimate_0given0_SE ProbabilityEstimate_0given1_Mean ProbabilityEstimate_0given1_SD ProbabilityEstimate_0given1_SE
0perc_0repeat 0.4 0.5506 0.0531 0.0038 0.6374 0.2336 0.3419 0.5372 0.5278 0.0254 0.0018 0.6433 0.0028 0.0 0.4169 0.003 0.0
0perc_0repeat 0.4 0.5456 0.0482 0.0034 0.6465 0.2142 0.3218 0.5333 0.5304 0.0248 0.0018 0.6414 0.0028 0.0 0.4193 0.0027 0.0
0perc_0repeat 0.4 0.5574 0.0555 0.0039 0.6604 0.2197 0.3297 0.5404 0.529 0.0233 0.0016 0.6436 0.003 0.0 0.4163 0.0029 0.0
我正在尝试绘制
1) the iteration number(1:100) in X Axis and the points of 5 columns (Accuracy_Mean, Accuracy_Median, PriorClass0_Mean, ProbabilityEstimate_0given0_Mean, ProbabilityEstimate_0given1_Mean in the Y AXIS.
2) distribution (density obtained by 100 points) of 5 columns with error bars (either SD or SE) in a single plot using ggplot.
我有 4 列 Precision_Mean、Recall_Mean、F1、Accuracy_Median 不遵循均值、sd、se 模式!
编辑1: 1)
dput(droplevels(head(data, 3))) 结构(列表(标签=结构(c(1L,1L,1L),.Label =“0perc_0repeat”,class=“因子”), trainingSize = c(0.4, 0.4, 0.4), Accuracy_Mean = c(0.5506, 0.5456, 0.5574), Accuracy_SD = c(0.0531, 0.0482, 0.0555), Accuracy_SE = c(0.0038, 0.0034, 0.0039), Precision_Mean = c(0.6374, 0.6465, 0.6604), Recall_Mean = c(0.2336, 0.2142, 0.2197), F1 = c(0.3419, 0.3218, 0.3297), Accuracy_Median = c(0.5372, 0.5333, 0.5404), PriorClass0_Mean = c(0.5278, 0.5304, 0.529 ), PriorClass0_SD = c(0.0254, 0.0248, 0.0233), PriorClass0_SE = c(0.0018, 0.0018, 0.0016), ProbabilityEstimate_0given0_Mean = c(0.6433, 0.6414, 0.6436), ProbabilityEstimate_0given0_SD = c(0.0028, 0.0028, 0.003), ProbabilityEstimate_0given0_SE = c(0, 0, 0), ProbabilityEstimate_0given1_Mean = c(0.4169, 0.4193, 0.4163), ProbabilityEstimate_0given1_SD = c(0.003, 0.0027, 0.0029), ProbabilityEstimate_0given1_SE = c(0, 0, 0)), .Names = c("标签", “trainingSize”、“Accuracy_Mean”、“Accuracy_SD”、“Accuracy_SE”、 “Precision_Mean”、“Recall_Mean”、“F1”、“Accuracy_Median”、“PriorClass0_Mean”、 “PriorClass0_SD”、“PriorClass0_SE”、“ProbabilityEstimate_0given0_Mean”、 “ProbabilityEstimate_0given0_SD”,“ProbabilityEstimate_0given0_SE”, “ProbabilityEstimate_0given1_Mean”,“ProbabilityEstimate_0given1_SD”, "ProbabilityEstimate_0given1_SE"), row.names = c(NA, 3L), class= "data.frame")
2) 预期输出类似于:
Vars Label trainingSize Mean SD SE
变量:平均值、PriorClass0、ProbabilityEstimate_0given0、ProbabilityEstimate_0given1; (Median、Precision、Recall、F1 不是必需的,或者它们可以适合上表,SD、SE 为 N/A 或 0)。
【问题讨论】:
-
也不清楚为什么
NA值应该进来...... -
您的担忧是真实的。但是请您不要想太多,我只是想要这种格式的数据。 NA 进来是因为我希望将数据框细分为两列(分组均值和标准差),并且由于 Median 没有匹配的列,所以今天,我想要一个 N/A 或 0 的列。