我有一个包含多个列的数据集,其中包含我想要转换为二进制的定量数据。为此,我想使用每列不同的阈值。
Example
Input:
antigen1 antigen2 antigen3 antigen4
1 215 421 2 12
2 1524 33 112 443
3 944 836 343 32
4 53 321 563 4
生成数据集的代码:
input <- data.frame(
antigen1 = c(215,1524,944,53),
antigen2 = c(421, 33, 836,321),
antigen3 = c(2,112,343,563),
antigen4 = c(12,443,32,4))
每列的阈值,对于抗原 1 到抗原 4 分别为:100、50、400、100
Output:
antigen1 antigen2 antigen3 antigen4
1 1 1 0 0
2 1 0 0 1
3 1 1 0 0
4 0 1 1 0
这是我使用 R 尝试过的:
# Define lists
cut_offs <- c(100,50,400,100)
antigens <- names(input[1:ncol(input)])
# Loop through both lists
for (anti in antigens) {
for (co in cut_offs) {
input[[anti]][input[[anti]]]<cut_offs[co] <- 0
input[[anti]][input[[anti]]]>=cut_offs[co] <- 1
}
}
如何使“anti”和“co”在每次循环后同时加一?