2
以下是複製我的數據集的代碼。根據變量獲取列的值和位置
col1=c(20,15,NA,NA)
col2=c(30,30,6,NA)
col3=c(40,NA,7,NA)
col4=c(NA,60,8,NA)
col5=c(60,75,9,NA)
check=c(40,35,10,NA)
df=data.frame(col1,col2,col3,col4,col5,check)
我想獲得它大於列的位置「檢查」 column.If有可能,我也想獲得該列的值也是如此。
這裏是我創建了一個功能,它不工作:
fun=function(x){
j1=which(x>df$check)[1]
if(is.na(j1)){
NA
}
else if (!is.na(j1)){
j1
}
}
df$test=apply(df[,1:5],1,fun)
我最後的數據幀應該是這樣的:
col1=c(20,15,NA,NA)
col2=c(30,30,6,NA)
col3=c(40,NA,7,NA)
col4=c(NA,60,8,NA)
col5=c(60,75,9,NA)
check=c(40,35,10,NA)
test=c(5,4,NA,NA)
value=c(60,60,NA,NA)
df=data.frame(col1,col2,col3,col4,col5,check, test,value)
任何幫助,將不勝感激。謝謝
構建'test'如'max.col(M1, '第一')* NA ^(rowSums(M1)== 0)'從處理中間變量可以節省。雖然也許很難解釋。另外,最好將新的cols添加到'df'而不是'cbind'新的'df [c(「test」,「value」)] < - list(test,value)'。去添加評論申請vs max.col?看起來後者在SO上更受歡迎。 – Frank
@Frank我想過把它用在一行中,但它變得很難理解。 – akrun