我有一个数据框(数据),包含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
非常感谢任何帮助 谢谢!
答案 0 :(得分:0)
以下内容应该有效
breaks <- c(seq(0, 70, by = 10), 75, 85, 95, 100)
as.numeric(cut(dat$Knockdown_percent, breaks, right = FALSE)) - 1