根据R中函数的百分比范围分配分数

时间:2016-04-07 01:33:22

标签: r


我有一个数据框(数据),包含96个观察值和9个变量。
使用第9个变量(Knockdown_percent)的值,我试图在0到10之间分配一个分数。
分数表:

Score: percent_range
10: >95
9: 85 to 95
8: 75 to 85
7: 70 to 75
6: 60 to 69
5: 50 to 59
4: 40 to 49
3: 30 to 39
2: 20 to 29
1: 10 to 19
0: < 9

例如,如果knockdown_percent是&lt; 9,得分:0; 10比19得分:1; 20比29得分2,依此类推...

我想在R中做这个并且有几个问题:
a)我可以帮助编写上述计算的函数 b)是否有内置函数在R
中执行相同的操作 b)如何将新分数列作为第10个变量附加到现有数据框(dat)。

下面我将展示数据框的一部分。

X.S_No Sequence   Pos GCper    qPCR1    qPCR2 Avg_qPCR SD_qPCR Knockdown_percent
1 1_1 TACATG      149    53    0.856    0.856    0.856   0.000              14.4
2 1_2 GAGGAT      116    58    0.686    0.710    0.698   0.017              30.2
3 1_3 CAGTTC        5    53    0.452    0.662    0.557   0.148              44.3

示例代码:

  compute_score <- function (x){
  n <- length(x)
  score <- 0
  for (i in 1:n){
    if (!is.na(x[i] <= 9 & x[i] >= 0)){
      score <- score + 0
    }
    else if (!is.na(x[i] >= 10 & x[i] <= 19)){
      score <- score + 1
    }
    return (score)
  }
}
compute_score(dat[,"Knockdown_percent"])

期望的输出:

X.S_No Sequence   Pos GCper    qPCR1    qPCR2 Avg_qPCR SD_qPCR Knockdown_percent  Score
    1 1_1 TACATG      149    53    0.856    0.856    0.856   0.000              14.4  1
    2 1_2 GAGGAT      116    58    0.686    0.710    0.698   0.017              30.2  3
    3 1_3 CAGTTC        5    53    0.452    0.662    0.557   0.148              44.3  4

非常感谢任何帮助 谢谢!

1 个答案:

答案 0 :(得分:0)

以下内容应该有效

breaks <- c(seq(0, 70, by = 10), 75, 85, 95, 100)
as.numeric(cut(dat$Knockdown_percent, breaks, right = FALSE)) - 1