2017-05-31 133 views
0

所以我有一個非常大的數據集,有一些缺失/不良數據。我想使用IF else語句對缺失的數據進行編碼。我不想爲所有缺失/錯誤的值分配一個值,而是希望在一個分數上分配基數。基於數據的分數分配值

因此,例如下面DF:

分配50 df$col2==B爲藍色,其他50%至RED

col1 col2 
1  a 
2  a 
3  b 
4  b 

我知道的%你可以這樣做:

if else(df$col2==b, "BLUE", df$col1) 

但我想要:

col1 col2 
1  a 
2  a 
3  BLUE 
4  RED 

我正在尋找條件的分區基礎。

+0

添加[再現的示例](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)可以更容易使所述的StackOverflow社會幫助找到答案。 – bouncyball

回答

0

您可以通過生成「紅色」和「藍色」的矢量以在需要時選擇作爲替換來實現。

## Generate some random data with missing values 
set.seed(2017) 
a = sample(c("Red", "Blue"), 20, replace=TRUE) 
a = ifelse(runif(20, 0, 1) < 0.12, NA, a) 

## Now replace missing 
a = ifelse(is.na(a), 
      sample(c("Red", "Blue"), length(a), replace=TRUE, prob=c(0.5,0.5)), a) 
+0

非常感謝您的方法! –