【发布时间】:2018-05-24 13:33:48
【问题描述】:
我有一个有 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 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
我一直在尝试很多事情,但我被阻止了
我尝试转换为数字,即我的数据框中的因素。它给了我 2 和 1 的值,而不是我的 -1 和 1。
【问题讨论】:
-
试试
as.numeric(as.character()) -
在@AntoniosK 上展开,尝试
2*as.numeric(as.character()) - 1获取值-1和1。 -
@RuiBarradas 不好的建议。如果您想对数据做出强有力的假设(或者如果您想将具有两个任意级别的因子转换为 -1、1),您可以执行
2*as.numeric() - 1,但由于级别已经是"-1"和"1",as.numeric(as.character())将完美运行,而您建议中的as.character是一个错误,会产生不好的结果。 -
@Gregor 对。我发现了另一个错误,OP 想要
-1或1如果所有值都是-1或 '1, otherwiseNA'。我会回答的。 -
谢谢,现在转换不是问题。我正在寻找一种将向量与有效方式进行比较的方法
标签: r vector compare intersect