我一直致力于这个项目,我陷入了以下困境:
我有7列,超过30%的行是NA。 顺便说一句,我的所有专栏都是数字。
在这些高缺失值列上,我想根据这些列的分位数值创建4个新列。
第1列 - 在包含数据的行中输入1;否则为0。 第二列 - 在第一个分位数下面的行中输入1;否则为0。 第3列 - 在第2个分位数范围内的行中输入1;否则为0。 第4列 - 在第3个分位数之上的行中输入1;否则为0。
我得到了第一列。但其余的,基于分位数的阈值一直是一个挑战。 这是我到目前为止所拥有的......
我接下来的3个专栏仅基于3个分位数:33.33333%,66.66667%和100%
quantile(High_NAS_set1$EFX, prob=c(33/99,66/99,99/99),na.rm=TRUE)
#1st column: assign 1 for a row that contains data; 0 otherwise
New.EFX_<-High_NAS_set1$EFX #creating a new column
New.EFX[!is.na(New.EFX)]<-1
New.EFX[is.na(New.EFX)]<-0
#2nd Column:assign 1 in rows below the first quantile; 0 otherwise
New.EFX2_<-High_NAS_set1$EFX #creating a new column
quant<-quantile(New2.EFX_Emp,probs=33/99,na.rm=TRUE)
which(New2.EFX_Emp_Total<=quant)<-1 # assign 1 for rows which indexes are below quant
which(New2.EFX_Emp_Total!=quant)<-0
最后两行给我一个错误:
Error in which(New2.EFX_Emp_Total <= quant) <- 1 :
could not find function "which<-"
任何帮助都将非常感激。 谢谢, 让