我有一个带有4个colums的数据框,这里是结构。
我想创建一个值为1的新向量(valuetofind),如果我的所有行都有数字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
我一直在尝试很多东西,但我被封锁了
我试图转换为数字,我的数据框中的facor。它给了我2和1的值,我的-1和1。
答案 0 :(得分:0)
使用嵌套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
如果有多个dplyr::case_when()
嵌套,您可以尝试ifelse()
。