在r中相交比较向量
我有一个4列的数据框,这里是结构 如果我的所有行都有数字1,我想创建一个值为1的新向量(valuetofind),如果我的所有行都有数字-1,则创建一个值为-1的新向量。在r中相交比较向量,r,vector,compare,intersect,R,Vector,Compare,Intersect,我有一个4列的数据框,这里是结构 如果我的所有行都有数字1,我想创建一个值为1的新向量(valuetofind),如果我的所有行都有数字-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 lev
其他的我们只是用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。使用嵌套的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
结果尝试as.numeric(as.character())
在@AntoniosK上展开,尝试2*as.numeric(as.character())-1
获取值-1
和1
@ruibradas坏建议。如果您想对数据进行强有力的假设(或者如果您想将具有两个任意级别的因子转换为-1,1),您可以执行2*as.numeric()-1
,但是由于级别已经是“-1”
和“1”
,as.numeric(as.character())
,因此as.numeric(as.character())
将非常有效,您的建议中的as.character
是一个bug,将产生一个坏结果。@Gregor Right。我发现了另一个bug,OP想要-1
或1
如果所有值都是-1
或`1,否则
NA`。我会回答的。谢谢,现在转换不是什么问题。我正在寻找一种有效的方法来比较向量