R按因子

时间:2017-12-07 13:20:08

标签: r

我从here找到了一个很好的R函数来得到ROC曲线x,y co-ords和stats(auc,p-value等)。它们作为列表返回(2 data.frames)

rocdata <- function(grp, pred){
  # Produces x and y co-ordinates for ROC curve plot
  # Arguments: grp - labels classifying subject status
  #            pred - values of each observation
  # Output: List with 2 components:
  #         roc = data.frame with x and y co-ordinates of plot
  #         stats = data.frame containing: area under ROC curve, p value, upper and lower 95% confidence interval

  grp <- as.factor(grp)
  if (length(pred) != length(grp)) {
    stop("The number of classifiers must match the number of data points")
  } 

  if (length(levels(grp)) != 2) {
    stop("There must only be 2 values for the classifier")
  }

  cut <- unique(pred)
  tp <- sapply(cut, function(x) length(which(pred > x & grp == levels(grp)[1])))
  fn <- sapply(cut, function(x) length(which(pred < x & grp == levels(grp)[1])))
  fp <- sapply(cut, function(x) length(which(pred > x & grp == levels(grp)[2])))
  tn <- sapply(cut, function(x) length(which(pred < x & grp == levels(grp)[2])))
  tpr <- tp / (tp + fn)
  fpr <- fp / (fp + tn)
  roc = data.frame(x = fpr, y = tpr)
  roc <- roc[order(roc$x, roc$y),]

  i <- 2:nrow(roc)
  auc <- (roc$x[i] - roc$x[i - 1]) %*% (roc$y[i] + roc$y[i - 1])/2

  pos <- pred[grp == levels(grp)[2]]
  neg <- pred[grp == levels(grp)[1]]
  q1 <- auc/(2-auc)
  q2 <- (2*auc^2)/(1+auc)
  se.auc <- sqrt(((auc * (1 - auc)) + ((length(pos) -1)*(q1 - auc^2)) + ((length(neg) -1)*(q2 - auc^2)))/(length(pos)*length(neg)))
  ci.upper <- auc + (se.auc * 0.96)
  ci.lower <- auc - (se.auc * 0.96)

  se.auc.null <- sqrt((1 + length(pos) + length(neg))/(12*length(pos)*length(neg)))
  z <- (auc - 0.5)/se.auc.null
  p <- 2*pnorm(-abs(z))

  stats <- data.frame (auc = auc,
                       p.value = p,
                       ci.upper = ci.upper,
                       ci.lower = ci.lower
                       )
  return (list(roc = roc, stats = stats))
}

我想在我的数据框上运行此功能,但首先根据因子变量(100%,75%,66%,50%,25%)将数据帧拆分为单独的数据帧。即我想要每个因素或变量的ROC coords(data.frame)和stats data.frame。然后我计划绘制每个因素(变量)的ROC曲线,我知道该怎么做。

我认为作为看台的功能可能对我来说很好,我可能想要使用ddply中的plyr或其中一个应用函数。

类似于split_df <- ddply(jr_all_melt,.(variable), rocdata(jr_all_melt$Class, jr_all_melt$SBR))

我希望这会返回rocstat data.frame以及其他列variable。我知道自己想要达到什么目标,但在R中,我对如何最好地实现它感到遗憾。

该函数适用于使用rocdata(jr_all_melt $ Class,jr_all_melt $ SBR)的完整数据集,但这包括所有级别的变量。我想按变量分割结果并比较ROC曲线和统计数据。

structure(list(Age = c(50.2916666666667, 50.2916666666667, 81.7666666666667, 
81.7666666666667, 72.4333333333333, 72.4333333333333, 62.1916666666667, 
62.1916666666667, 79.3694444444444, 79.3694444444444, 81.0583333333333, 
81.0583333333333, 67.4194444444445, 67.4194444444445, 82.6361111111111, 
82.6361111111111, 49.2638888888889, 49.2638888888889, 79.5416666666667, 
79.5416666666667, 53.8833333333333, 53.8833333333333, 53.7416666666667, 
53.7416666666667, 91.1, 91.1, 79.6138888888889, 79.6138888888889, 
64.8388888888889, 64.8388888888889, 81.0444444444445, 81.0444444444445, 
64.3305555555555, 64.3305555555555, 67.0083333333333, 67.0083333333333, 
56.3972222222222, 56.3972222222222, 83.1777777777778, 83.1777777777778, 
75.9027777777778, 75.9027777777778, 79.7944444444445, 79.7944444444445, 
56.4277777777778, 56.4277777777778, 67.5083333333333, 67.5083333333333, 
70.9888888888889, 70.9888888888889, 67.5805555555555, 67.5805555555555, 
67.7388888888889, 67.7388888888889, 58.3083333333333, 58.3083333333333, 
68.2805555555556, 68.2805555555556, 52.6055555555556, 52.6055555555556, 
84.2861111111111, 84.2861111111111, 70.7861111111111, 70.7861111111111, 
75.5222222222222, 75.5222222222222, 82.8361111111111, 82.8361111111111, 
80.2361111111111, 80.2361111111111, 76.3888888888889, 76.3888888888889, 
73.4, 73.4, 59.3055555555556, 59.3055555555556, 74.6972222222222, 
74.6972222222222, 76.025, 76.025, 65.0944444444444, 65.0944444444444, 
64.1888888888889, 61.9722222222222, 52.0472222222222, 64.8055555555556, 
72.5083333333333, 83.0416666666667, 72.9, 68.9666666666667, 60.3694444444444, 
80.3027777777778, 70.9333333333333, 68.4555555555555, 70.825, 
73.9972222222222, 60.0916666666667, 77.2833333333333, 73.0722222222222, 
66.4861111111111, 66.4777777777778, 41.7722222222222, 78.1861111111111, 
74.8305555555555, 72.1638888888889, 71.725, 78.7416666666667, 
65.0055555555556, 77.7083333333333, 54.1722222222222, 62.8583333333333, 
73.0361111111111, 78.4944444444444, 77.4027777777778, 75.2472222222222, 
68.475, 64.7222222222222, 81.1972222222222, 51.5861111111111, 
60.8833333333333, 73.3972222222222, 76.8694444444444, 53.8805555555556, 
63.3083333333333, 78.1083333333333, 78.4666666666667, 50.2916666666667, 
50.2916666666667, 81.7666666666667, 81.7666666666667, 72.4333333333333, 
72.4333333333333, 62.1916666666667, 62.1916666666667, 79.3694444444444, 
79.3694444444444, 81.0583333333333, 81.0583333333333, 67.4194444444445, 
67.4194444444445, 82.6361111111111, 82.6361111111111, 49.2638888888889, 
49.2638888888889, 79.5416666666667, 79.5416666666667, 53.8833333333333, 
53.8833333333333, 53.7416666666667, 53.7416666666667, 91.1, 91.1, 
79.6138888888889, 79.6138888888889, 64.8388888888889, 64.8388888888889, 
81.0444444444445, 81.0444444444445, 64.3305555555555, 64.3305555555555, 
67.0083333333333, 67.0083333333333, 56.3972222222222, 56.3972222222222, 
83.1777777777778, 83.1777777777778, 75.9027777777778, 75.9027777777778, 
79.7944444444445, 79.7944444444445, 56.4277777777778, 56.4277777777778, 
67.5083333333333, 67.5083333333333, 70.9888888888889, 70.9888888888889, 
67.5805555555555, 67.5805555555555, 67.7388888888889, 67.7388888888889, 
58.3083333333333, 58.3083333333333, 68.2805555555556, 68.2805555555556, 
52.6055555555556, 52.6055555555556, 84.2861111111111, 84.2861111111111, 
70.7861111111111, 70.7861111111111, 75.5222222222222, 75.5222222222222, 
82.8361111111111, 82.8361111111111, 80.2361111111111, 80.2361111111111, 
76.3888888888889, 76.3888888888889, 73.4, 73.4, 59.3055555555556, 
59.3055555555556, 74.6972222222222, 74.6972222222222, 76.025, 
76.025, 65.0944444444444, 65.0944444444444, 64.1888888888889, 
61.9722222222222, 52.0472222222222, 64.8055555555556, 72.5083333333333, 
83.0416666666667, 72.9, 68.9666666666667, 60.3694444444444, 80.3027777777778, 
70.9333333333333, 68.4555555555555, 70.825, 73.9972222222222, 
60.0916666666667, 77.2833333333333, 73.0722222222222, 66.4861111111111, 
66.4777777777778, 41.7722222222222, 78.1861111111111, 74.8305555555555, 
72.1638888888889, 71.725, 78.7416666666667, 65.0055555555556, 
77.7083333333333, 54.1722222222222, 62.8583333333333, 73.0361111111111, 
78.4944444444444, 77.4027777777778, 75.2472222222222, 68.475, 
64.7222222222222, 81.1972222222222, 51.5861111111111, 60.8833333333333, 
73.3972222222222, 76.8694444444444, 53.8805555555556, 63.3083333333333, 
78.1083333333333, 78.4666666666667, 50.2916666666667, 50.2916666666667, 
81.7666666666667, 81.7666666666667, 72.4333333333333, 72.4333333333333, 
62.1916666666667, 62.1916666666667, 79.3694444444444, 79.3694444444444, 
81.0583333333333, 81.0583333333333, 67.4194444444445, 67.4194444444445, 
82.6361111111111, 82.6361111111111, 49.2638888888889, 49.2638888888889, 
79.5416666666667, 79.5416666666667, 53.8833333333333, 53.8833333333333, 
53.7416666666667, 53.7416666666667, 91.1, 91.1, 79.6138888888889, 
79.6138888888889, 64.8388888888889, 64.8388888888889, 81.0444444444445, 
81.0444444444445, 64.3305555555555, 64.3305555555555, 67.0083333333333, 
67.0083333333333, 56.3972222222222, 56.3972222222222, 83.1777777777778, 
83.1777777777778, 75.9027777777778, 75.9027777777778, 79.7944444444445, 
79.7944444444445, 56.4277777777778, 56.4277777777778, 67.5083333333333, 
67.5083333333333, 70.9888888888889, 70.9888888888889, 67.5805555555555, 
67.5805555555555, 67.7388888888889, 67.7388888888889, 58.3083333333333, 
58.3083333333333, 68.2805555555556, 68.2805555555556, 52.6055555555556, 
52.6055555555556, 84.2861111111111, 84.2861111111111, 70.7861111111111, 
70.7861111111111, 75.5222222222222, 75.5222222222222, 82.8361111111111, 
82.8361111111111, 80.2361111111111, 80.2361111111111, 76.3888888888889, 
76.3888888888889, 73.4, 73.4, 59.3055555555556, 59.3055555555556, 
74.6972222222222, 74.6972222222222, 76.025, 76.025, 65.0944444444444, 
65.0944444444444, 64.1888888888889, 61.9722222222222, 52.0472222222222, 
64.8055555555556, 72.5083333333333, 83.0416666666667, 72.9, 68.9666666666667, 
60.3694444444444, 80.3027777777778, 70.9333333333333, 68.4555555555555, 
70.825, 73.9972222222222, 60.0916666666667, 77.2833333333333, 
73.0722222222222, 66.4861111111111, 66.4777777777778, 41.7722222222222, 
78.1861111111111, 74.8305555555555, 72.1638888888889, 71.725, 
78.7416666666667, 65.0055555555556, 77.7083333333333, 54.1722222222222, 
62.8583333333333, 73.0361111111111, 78.4944444444444, 77.4027777777778, 
75.2472222222222, 68.475, 64.7222222222222, 81.1972222222222, 
51.5861111111111, 60.8833333333333, 73.3972222222222, 76.8694444444444, 
53.8805555555556, 63.3083333333333, 78.1083333333333, 78.4666666666667, 
50.2916666666667, 50.2916666666667, 81.7666666666667, 81.7666666666667, 
72.4333333333333, 72.4333333333333, 62.1916666666667, 62.1916666666667, 
79.3694444444444, 79.3694444444444, 81.0583333333333, 81.0583333333333, 
67.4194444444445, 67.4194444444445, 82.6361111111111, 82.6361111111111, 
49.2638888888889, 49.2638888888889, 79.5416666666667, 79.5416666666667, 
53.8833333333333, 53.8833333333333, 53.7416666666667, 53.7416666666667, 
91.1, 91.1, 79.6138888888889, 79.6138888888889, 64.8388888888889, 
64.8388888888889, 81.0444444444445, 81.0444444444445, 64.3305555555555, 
64.3305555555555, 67.0083333333333, 67.0083333333333, 56.3972222222222, 
56.3972222222222, 83.1777777777778, 83.1777777777778, 75.9027777777778, 
75.9027777777778, 79.7944444444445, 79.7944444444445, 56.4277777777778, 
56.4277777777778, 67.5083333333333, 67.5083333333333, 70.9888888888889, 
70.9888888888889, 67.5805555555555, 67.5805555555555, 67.7388888888889, 
67.7388888888889, 58.3083333333333, 58.3083333333333, 68.2805555555556, 
68.2805555555556, 52.6055555555556, 52.6055555555556, 84.2861111111111, 
84.2861111111111, 70.7861111111111, 70.7861111111111, 75.5222222222222, 
75.5222222222222, 82.8361111111111, 82.8361111111111, 80.2361111111111, 
80.2361111111111, 76.3888888888889, 76.3888888888889, 73.4, 73.4, 
59.3055555555556, 59.3055555555556, 74.6972222222222, 74.6972222222222, 
76.025, 76.025, 65.0944444444444, 65.0944444444444, 64.1888888888889, 
61.9722222222222, 52.0472222222222, 64.8055555555556, 72.5083333333333, 
83.0416666666667, 72.9, 68.9666666666667, 60.3694444444444, 80.3027777777778, 
70.9333333333333, 68.4555555555555, 70.825, 73.9972222222222, 
60.0916666666667, 77.2833333333333, 73.0722222222222, 66.4861111111111, 
66.4777777777778, 41.7722222222222, 78.1861111111111, 74.8305555555555, 
72.1638888888889, 71.725, 78.7416666666667, 65.0055555555556, 
77.7083333333333, 54.1722222222222, 62.8583333333333, 73.0361111111111, 
78.4944444444444, 77.4027777777778, 75.2472222222222, 68.475, 
64.7222222222222, 81.1972222222222, 51.5861111111111, 60.8833333333333, 
73.3972222222222, 76.8694444444444, 53.8805555555556, 63.3083333333333, 
78.1083333333333, 78.4666666666667, 50.2916666666667, 50.2916666666667, 
81.7666666666667, 81.7666666666667, 72.4333333333333, 72.4333333333333, 
62.1916666666667, 62.1916666666667, 79.3694444444444, 79.3694444444444, 
81.0583333333333, 81.0583333333333, 67.4194444444445, 67.4194444444445, 
82.6361111111111, 82.6361111111111, 49.2638888888889, 49.2638888888889, 
79.5416666666667, 79.5416666666667, 53.8833333333333, 53.8833333333333, 
53.7416666666667, 53.7416666666667, 91.1, 91.1, 79.6138888888889, 
79.6138888888889, 64.8388888888889, 64.8388888888889, 81.0444444444445, 
81.0444444444445, 64.3305555555555, 64.3305555555555, 67.0083333333333, 
67.0083333333333, 56.3972222222222, 56.3972222222222, 83.1777777777778, 
83.1777777777778, 75.9027777777778, 75.9027777777778, 79.7944444444445, 
79.7944444444445, 56.4277777777778, 56.4277777777778, 67.5083333333333, 
67.5083333333333, 70.9888888888889, 70.9888888888889, 67.5805555555555, 
67.5805555555555, 67.7388888888889, 67.7388888888889, 58.3083333333333, 
58.3083333333333, 68.2805555555556, 68.2805555555556, 52.6055555555556, 
52.6055555555556, 84.2861111111111, 84.2861111111111, 70.7861111111111, 
70.7861111111111, 75.5222222222222, 75.5222222222222, 82.8361111111111, 
82.8361111111111, 80.2361111111111, 80.2361111111111, 76.3888888888889, 
76.3888888888889, 73.4, 73.4, 59.3055555555556, 59.3055555555556, 
74.6972222222222, 74.6972222222222, 76.025, 76.025, 65.0944444444444, 
65.0944444444444, 64.1888888888889, 61.9722222222222, 52.0472222222222, 
64.8055555555556, 72.5083333333333, 83.0416666666667, 72.9, 68.9666666666667, 
60.3694444444444, 80.3027777777778, 70.9333333333333, 68.4555555555555, 
70.825, 73.9972222222222, 60.0916666666667, 77.2833333333333, 
73.0722222222222, 66.4861111111111, 66.4777777777778, 41.7722222222222, 
78.1861111111111, 74.8305555555555, 72.1638888888889, 71.725, 
78.7416666666667, 65.0055555555556, 77.7083333333333, 54.1722222222222, 
62.8583333333333, 73.0361111111111, 78.4944444444444, 77.4027777777778, 
75.2472222222222, 68.475, 64.7222222222222, 81.1972222222222, 
51.5861111111111, 60.8833333333333, 73.3972222222222, 76.8694444444444, 
53.8805555555556, 63.3083333333333, 78.1083333333333, 78.4666666666667
), Sex = c("M", "M", "M", "M", "F", "F", "M", "M", "M", "M", 
"M", "M", "M", "M", "F", "F", "F", "F", "M", "M", "F", "F", "M", 
"M", "F", "F", "F", "F", "F", "F", "M", "M", "F", "F", "M", "M", 
"M", "M", "F", "F", "M", "M", "M", "M", "M", "M", "F", "F", "F", 
"F", "F", "F", "F", "F", "M", "M", "M", "M", "F", "F", "F", "F", 
"M", "M", "F", "F", "M", "M", "M", "M", "M", "M", "M", "M", "M", 
"M", "F", "F", "F", "F", "F", "F", "F", "M", "M", "M", "M", "F", 
"M", "F", "M", "M", "M", "M", "M", "M", "F", "M", "M", "M", "F", 
"M", "F", "M", "M", "M", "F", "M", "F", "F", "F", "M", "F", "M", 
"M", "F", "F", "M", "F", "F", "M", "M", "M", "M", "F", "F", "M", 
"M", "M", "M", "F", "F", "M", "M", "M", "M", "M", "M", "M", "M", 
"F", "F", "F", "F", "M", "M", "F", "F", "M", "M", "F", "F", "F", 
"F", "F", "F", "M", "M", "F", "F", "M", "M", "M", "M", "F", "F", 
"M", "M", "M", "M", "M", "M", "F", "F", "F", "F", "F", "F", "F", 
"F", "M", "M", "M", "M", "F", "F", "F", "F", "M", "M", "F", "F", 
"M", "M", "M", "M", "M", "M", "M", "M", "M", "M", "F", "F", "F", 
"F", "F", "F", "F", "M", "M", "M", "M", "F", "M", "F", "M", "M", 
"M", "M", "M", "M", "F", "M", "M", "M", "F", "M", "F", "M", "M", 
"M", "F", "M", "F", "F", "F", "M", "F", "M", "M", "F", "F", "M", 
"F", "F", "M", "M", "M", "M", "F", "F", "M", "M", "M", "M", "F", 
"F", "M", "M", "M", "M", "M", "M", "M", "M", "F", "F", "F", "F", 
"M", "M", "F", "F", "M", "M", "F", "F", "F", "F", "F", "F", "M", 
"M", "F", "F", "M", "M", "M", "M", "F", "F", "M", "M", "M", "M", 
"M", "M", "F", "F", "F", "F", "F", "F", "F", "F", "M", "M", "M", 
"M", "F", "F", "F", "F", "M", "M", "F", "F", "M", "M", "M", "M", 
"M", "M", "M", "M", "M", "M", "F", "F", "F", "F", "F", "F", "F", 
"M", "M", "M", "M", "F", "M", "F", "M", "M", "M", "M", "M", "M", 
"F", "M", "M", "M", "F", "M", "F", "M", "M", "M", "F", "M", "F", 
"F", "F", "M", "F", "M", "M", "F", "F", "M", "F", "F", "M", "M", 
"M", "M", "F", "F", "M", "M", "M", "M", "F", "F", "M", "M", "M", 
"M", "M", "M", "M", "M", "F", "F", "F", "F", "M", "M", "F", "F", 
"M", "M", "F", "F", "F", "F", "F", "F", "M", "M", "F", "F", "M", 
"M", "M", "M", "F", "F", "M", "M", "M", "M", "M", "M", "F", "F", 
"F", "F", "F", "F", "F", "F", "M", "M", "M", "M", "F", "F", "F", 
"F", "M", "M", "F", "F", "M", "M", "M", "M", "M", "M", "M", "M", 
"M", "M", "F", "F", "F", "F", "F", "F", "F", "M", "M", "M", "M", 
"F", "M", "F", "M", "M", "M", "M", "M", "M", "F", "M", "M", "M", 
"F", "M", "F", "M", "M", "M", "F", "M", "F", "F", "F", "M", "F", 
"M", "M", "F", "F", "M", "F", "F", "M", "M", "M", "M", "F", "F", 
"M", "M", "M", "M", "F", "F", "M", "M", "M", "M", "M", "M", "M", 
"M", "F", "F", "F", "F", "M", "M", "F", "F", "M", "M", "F", "F", 
"F", "F", "F", "F", "M", "M", "F", "F", "M", "M", "M", "M", "F", 
"F", "M", "M", "M", "M", "M", "M", "F", "F", "F", "F", "F", "F", 
"F", "F", "M", "M", "M", "M", "F", "F", "F", "F", "M", "M", "F", 
"F", "M", "M", "M", "M", "M", "M", "M", "M", "M", "M", "F", "F", 
"F", "F", "F", "F", "F", "M", "M", "M", "M", "F", "M", "F", "M", 
"M", "M", "M", "M", "M", "F", "M", "M", "M", "F", "M", "F", "M", 
"M", "M", "F", "M", "F", "F", "F", "M", "F", "M", "M", "F", "F", 
"M", "F", "F", "M", "M", "M", "M", "F", "F"), Class = c(0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), variable = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L), .Label = c("100%", "75%", "66.6%", "50%", 
"25%"), class = "factor"), SBR = c(12.681, 13.04, 11.72, 10.124, 
10.69, 11.764, 8.561, 6.438, 4.263, 7.568, 9.231, 8.922, 12.651, 
12.43, 8.281, 7.087, 12.944, 12.538, 11.443, 10.491, 12.792, 
13.091, 7.091, 7.082, 5.406, 5.044, 11.007, 11.679, 9.909, 10.501, 
10.268, 9.312, 16.485, 16.838, 11.743, 9.811, 13.447, 13.355, 
5.138, 5.475, 8.883, 8.323, 9.054, 9.72, 21.538, 23.007, 8.842, 
9.027, 5.757, 4.229, 5.293, 5.56, 9.714, 9.559, 13.698, 13.965, 
7.364, 9.345, 9.309, 9.641, 6.893, 5.765, 7.45, 7.414, 3.651, 
3.594, 8.243, 9.381, 7.068, 6.376, 7.011, 8.016, 9.391, 8.884, 
8.24, 8.142, 9.045, 8.306, 5.427, 6.813, 10.123, 12.302, 3.953, 
9.049, 4.292, 4.182, 5.084, 1.839, 2.693, 3.541, 4.079, 5.09, 
5.655, 2.735, 8.321, -0.761, 4.331, 3.822, 1.403, 8.115, 7.87, 
8.127, 3.931, 7.447, 1.362, 4.431, -1.583, 6.545, 2.851, 4.957, 
6.518, 5.894, 3.874, 8.008, 4.72, 7.651, 8.212, 6.915, 9.625, 
7.094, 2.291, 8.13, 7.71, 6.319, 2.494, 2.002, 12.478, 13.372, 
12.212, 12.551, 10.571, 11.693, 8.674, 6.894, 5.061, 7.714, 8.512, 
8.35, 12.251, 12.375, 7.898, 6.654, 12.89, 12.83, 12.24, 10.638, 
13.615, 13.877, 6.845, 7.28, 5.224, 4.883, 10.742, 11.542, 10.308, 
10.896, 9.356, 11.338, 15.793, 16.179, 12.567, 11.429, 13.431, 
13.99, 6.123, 5.167, 8.709, 7.829, 7.599, 8.454, 19.393, 20.918, 
8.33, 9.136, 4.824, 3.95, 6.425, 6.67, 8.22, 7.626, 13.909, 13.971, 
8.425, 8.845, 8.887, 9.942, 7.078, 5.547, 6.837, 6.094, 4.576, 
4.528, 8.619, 10.478, 3.125, 3.382, 7.22, 8.293, 11.238, 10.548, 
7.197, 7.097, 9.659, 8.863, 5.577, 6.025, 10.77, 11.954, 3.814, 
9.114, 4.435, 3.592, 5.265, 1.093, 3.903, 3.581, 3.602, 4.468, 
5.451, 1.995, 7.03, -0.539, 4.875, 3.812, 1.476, 8.107, 8.628, 
9.107, 2.54, 6.902, 1.553, 5.64, -2.762, 6.625, 2.715, 5.475, 
6.085, 6.385, 2.794, 7.813, 4.801, 5.883, 7.837, 4.8, 9.527, 
8.804, 2.988, 5.729, 7.275, 8.683, 2.627, 1.882, 11.884, 12.791, 
10.861, 9.382, 9.525, 10.237, 9.299, 7.338, 5.075, 7.583, 10.324, 
9.143, 14.003, 12.861, 7.687, 6.719, 13.422, 13.595, 11.828, 
10.943, 12.296, 12.836, 7.069, 7.523, 5.691, 5.309, 11.494, 12.253, 
8.711, 8.991, 9.009, 8.809, 15.387, 15.631, 11.948, 12.295, 15.034, 
13.889, 5.454, 6.518, 9.535, 8.777, 8.436, 8.396, 18.508, 20.444, 
9.505, 8.998, 4.705, 3.47, 5.202, 4.86, 7.532, 7.451, 14.499, 
14.114, 6.872, 9.877, 9.077, 9.33, 6.009, 4.583, 5.988, 6.252, 
4.766, 4.273, 11.44, 10.971, 6.393, 5.551, 7.107, 6.959, 11.844, 
10.795, 9.183, 8.909, 9.142, 7.753, 6.055, 7.152, 9.566, 11.637, 
3.668, 8.697, 4.701, 3.218, 4.292, 0.273, 2.713, 3.579, 5.496, 
6.322, 4.852, 3.553, 6.82, -0.745, 4.581, 4.12, 1.886, 7.633, 
8.07, 8.381, 3.627, 7.156, 1.669, 2.754, -2.56, 5.437, 2.587, 
4.361, 4.959, 4.653, 3.2, 7.943, 5.922, 6.379, 5.403, 4.698, 
9.665, 6.82, 2.432, 8.587, 6.4, 6.454, 2.054, 0.999, 10.129, 
11.129, 13.195, 11.133, 10.702, 12.333, 9.4, 7.665, 5.538, 8.751, 
8.868, 8.25, 12.695, 12.2, 8.346, 6.802, 12.007, 11.245, 11.456, 
9.58, 12.941, 12.826, 6.239, 6.829, 5.887, 4.896, 10.303, 11.478, 
8.972, 9.636, 9.538, 8.34, 16.686, 16.453, 10.827, 8.923, 13.867, 
13.964, 5.016, 5.51, 7.635, 7.577, 7.725, 9.532, 21.083, 21.567, 
9.417, 8.435, 5.635, 4.206, 4.299, 6.018, 8.642, 8.961, 12.613, 
12.665, 8.861, 10.567, 9.365, 9.341, 6.435, 5.435, 7.099, 7.285, 
5.467, 4.823, 8.959, 10.568, 6.085, 4.575, 7.267, 8.206, 9.589, 
9.242, 7.504, 7.43, 9.171, 7.967, 3.426, 5.843, 10.341, 12.598, 
4.001, 9.796, 4.188, 5.943, 6.093, 0.063, 2.512, 3.094, 3.106, 
5.35, 6.468, 3.677, 7.964, -0.355, 4.088, 3.271, 0.608, 7.864, 
7.941, 7.409, 1.796, 6.667, 0.731, 5.275, -1.904, 5.552, 2.487, 
4.371, 6.181, 6.772, 2.993, 7.824, 4.659, 5.242, 5.33, 5.572, 
9.409, 6.97, 2.791, 7.5, 6.753, 6.453, 1.955, 1.61, 13.193, 13.31, 
12.485, 9.241, 11.773, 12.114, 9.747, 6.474, 5.956, 9.922, 11.264, 
10.741, 15.046, 14.575, 6.828, 5.505, 13.366, 12.29, 10.432, 
10.353, 12.386, 11.557, 6.68, 7.691, 5.158, 5.553, 10.371, 11.818, 
9.635, 9.746, 8.955, 7.844, 18.448, 17.837, 11.19, 11.44, 13.722, 
13.807, 7.387, 6.504, 8.724, 8.63, 9.441, 11.918, 19.074, 21.111, 
8.849, 8.582, 3.558, 3.453, 4.963, 5.903, 9.605, 9.247, 12.929, 
14.318, 7.057, 8.258, 9.982, 9.598, 8.709, 6.397, 7.797, 5.743, 
5.742, 5.503, 7.563, 8.864, 5.685, 5.297, 7.63, 7.469, 10.426, 
9.266, 7.451, 7.535, 9.941, 8.376, 4.793, 5.155, 9.867, 12.821, 
3.052, 5.617, 2.7, 4.793, 6.38, 0.828, 2.281, 2.713, 4.508, 5.245, 
5.325, 3.849, 6.326, 0.197, 5.909, 3.548, 1.077, 8.596, 10.599, 
6.268, 1.86, 7.651, 1.083, 4.869, -2.972, 4.83, 2.146, 5.991, 
4.333, 7.388, 2.181, 6.888, 4.85, 5.289, 5.878, 4.706, 4.609, 
6.398, 2.106, 10.709, 6.243, 7.267, 1.431, 1.706)), row.names = c(NA, 
-630L), .Names = c("Age", "Sex", "Class", "variable", "SBR"), class = "data.frame")

1 个答案:

答案 0 :(得分:0)

我只能通过手动拆分运行该功能的data.frame并将它们组合在一起来获得所需格式的数据。我如何以更整洁的方式做到这一点?

FullCount = jr_all_melt[jr_all_melt$variable=="100%",]
ThreeQuart = jr_all_melt[jr_all_melt$variable=="75%",]
TwoThird = jr_all_melt[jr_all_melt$variable=="66.6%",]
HalfCount = jr_all_melt[jr_all_melt$variable=="50%",]
OneQuart = jr_all_melt[jr_all_melt$variable=="25%",]

Full.ROC = rocdata(FullCount$Class,FullCount$SBR)
Full.ROC$roc$variable = "100%"
ThreeQuart.ROC = rocdata(ThreeQuart$Class,ThreeQuart$SBR)
ThreeQuart.ROC$roc$variable = "75%"
TwoThird.ROC = rocdata(TwoThird$Class,TwoThird$SBR)
TwoThird.ROC$roc$variable = "66.6%"
HalfCount.ROC = rocdata(HalfCount$Class,HalfCount$SBR)
HalfCount.ROC$roc$variable = "50%"
OneQuart.ROC = rocdata(OneQuart$Class,OneQuart$SBR)
OneQuart.ROC$roc$variable = "25%"

roc_all <- rbind(Full.ROC$roc,ThreeQuart.ROC$roc,TwoThird.ROC$roc,HalfCount.ROC$roc,OneQuart.ROC$roc)
stats_all <- rbind(stats_all, Full.ROC$stats,ThreeQuart.ROC$stats, TwoThird.ROC$stats, HalfCount.ROC$stats,OneQuart.ROC$stats)