[英]Intersect compare vectors in r
我有一個帶有4列的數據框,這里是結構。
我想創建一個新的向量(valuetofind),如果我所有行的數字都為1,則返回-1,如果我所有行的數字都為-1,則返回-1。
其他只是用NA填充。
str(results)
'data.frame': 435 obs. of 4 variables:
$ model.knn: Factor w/ 2 levels "-1","1": 2 2 2 2 2 2 2 1 2 2 ...
$ p.arbre : Factor w/ 2 levels "-1","1": 2 2 1 1 2 2 2 1 2 2 ...
$ p.svm : Factor w/ 2 levels "-1","1": 2 2 2 2 2 2 2 2 2 2 ...
$ p.rf : Factor w/ 2 levels "-1","1": 2 2 2 1 2 2 2 1 2 2 ...
model.knn p.arbre p.svm p.rf Valuetofind
1 1 1 1 1
-1 -1 1 1 NA
-1 -1 -1 -1 -1
我已經嘗試了很多事情,但被阻止了
我試圖將其轉換為數值,即數據框中的外觀。 它使我的-1和1的值分別為2和1。
將嵌套的ifelse()
和rowSums()
用於base
解決方案。
results <- data.frame(model.knn = c(1, -1, -1), p.arbre = c(1, -1, -1), p.svm = c(1, 1, -1), p.rf = c(1, 1, -1))
results["Valuetofind"] <- ifelse(rowSums(results) == ncol(results), 1,
ifelse(rowSums(results) == -ncol(results), -1, NA))
results
model.knn p.arbre p.svm p.rf Valuetofind
1 1 1 1 1 1
2 -1 -1 1 1 NA
3 -1 -1 -1 -1 -1
如果有多個ifelse()
嵌套,則可以嘗試dplyr::case_when()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.