如何执行了按行特性在数据帧选择多行多列的功能?

时间:2019-01-30 18:28:47

标签: r

我的数据和任务:

每行数据都有3列定义特征,2列包含“预测”和“观察”结果。我想对具有相同特征的预测值和观察值进行统计比较。

这是一个示例数据集:

metadata <- data.frame("sample" = c(rep("x",8),rep("y",8)),
                   "test" = rep(c("a","b"),8),
                   "strain" = rep(c("i","i","j","j"),4),
                   "predicted" = sample(1:10,16,replace=T),
                   "observed" = sample(1:10,16,replace=T))

以下是我尝试使用dplyr的示例:

metadata %>%
  filter(sample == "x" & test == "a" & strain == "i") %>%
  mutate(RMSE = rmse(predicted,observed))

哪个会产生:

  sample test strain predicted observed    RMSE
 1      x    a      i         5        2 2.12132
 2      x    a      i         6        6 2.12132

这是我在寻找的结果。但是我需要自动完成每个独特的样本,测试和应变组合。 (我的数据集比这个例子要多得多。)

我认为dplyr是环顾四周的最佳解决方案。但我愿意接受任何解决方案。预先谢谢你!

1 个答案:

答案 0 :(得分:1)

您可以使用group_by

library(dplyr)

metadata %>%
  group_by(sample, test, strain) %>%
  mutate(RMSE = rmse(predicted, observed))