我想計算比率(A/B = C)。然後我想爲比率分配一個標籤。如果比率等於0,則標籤獲得「0」。如果值小於1的標籤獲得「1」。最後比例大於1的標籤獲得「2」。R if else with for循環
下面是示例數據:
A B C
1 0 171.06 0.0000000
2 1 2 0.5
3 0 120.84 360.00000
4 0 308.07 0.0000000
5 0 243.06 0.0000000
6 0 876.015 0.0000000
這裏是循環的功能:
targets <- function(data)
{
label_df <- data[,c("A", "B")]
label_df[is.na(label_df)] <- 0
label_df["C"] <- (label_df["A"]/label_df["B"])
for(i in 1:nrow(label_df))
{
if(label_df$C == 0){label_df[i,"C"] <- 0}
else if(label_df$C < 1){label_df[i,"C"] <- 1}
else {label_df[i,"C"] <- 2}
}
return(as.data.frame(label_df))
}
這裏是結果。它顯示所有標籤0.
lab <- target(data)
head(lab)
A B C label
1 0 171.06 0.0000000 0
2 1 2 0.5 0
3 0 120.84 360.00000 0
4 0 308.07 0.0000000 0
5 0 243.06 0.0000000 0
6 0 876.015 0.0000000 0
我用table()函數檢查結果,它只顯示標籤0的所有數據。沒有1或2個標籤。我無法弄清楚問題出在哪裏。任何想法?
所以我想用一個非常困難的方式來解決這個問題。感謝這個非常簡單的解決方案!下一次,我會先考慮簡單... – silverstone