r - 对两个匹配的字符串/单词使用 ifelse 函数
问题描述
我的问题很简单。我有一个像这样的数据集:
observed predicted probability result2
1 Head-up Grazing 0.2727273 FALSE
2 Head-up Grazing 0.7272727 TRUE
3 Head-up Grazing 0.7272727 TRUE
4 Head-up Grazing 0.5454545 TRUE
5 Head-up Grazing 0.7272727 TRUE
6 Head-up Grazing 0.4545455 FALSE
7 Head-up Vigilance 0.3636364 FALSE
8 Head-up Grazing 0.3636364 FALSE
9 Head-up Vigilance 0.3636364 FALSE
10 Unknown Grazing 0.3636364 FALSE
11 Moving Head-up 0.4545455 FALSE
12 Moving Head-up 0.3636364 FALSE
我results2
通过使用如下ifelse
函数成功创建列的位置:
table$result1<-ifelse(table$probability>0.5,"TRUE","FALSE")
但是,我正在尝试使用相同的函数来创建 column result1
,这将是:
table$result1<-ifelse(table$observed=table$predicted, "POSITIVE", "NEGATIVE")`.
我收到了Error: unexpected '='
错误table$result1<-ifelse(table$observed=
observed
确实,如果列上的单词与同一行列上的单词匹配,我希望使用“POSITIVE” predicted
,反之则使用“NEGATIVE”。
有任何想法吗?任何帮助表示赞赏!
解决方案
就像@Sotos 评论的那样(对不起,我劫持了您的评论,但尚未发布正确答案),问题是您使用=
的是==
.
看看这个例子:
首先我生成测试数据集
df <- data.frame("observed" = rep(c("observed", "predicted"), 3),
"predicted" = "observed",
stringsAsFactors = F)
看起来像:
observed predicted
1 observed observed
2 predicted observed
3 observed observed
4 predicted observed
5 observed observed
6 predicted observed
然后使用ifelse
df$result <- ifelse(df$observed == df$predicted, "POSITIVE", "NEGATIVE")
结果是
observed predicted result
1 observed observed POSITIVE
2 predicted observed NEGATIVE
3 observed observed POSITIVE
4 predicted observed NEGATIVE
5 observed observed POSITIVE
6 predicted observed NEGATIVE
同样,正如@Soto 指出的那样,您的问题是存储在数据集中的数据类型。你有factors
而且应该是characters
。
我在创建数据集时添加了这个问题stringsAsFactors = F
,这也适用于read.table
or之类的函数read.csv
。
另一种选择是使用@Soto 建议的解决方案,类似于
df$observed <- as.character(df$observed)
df$predicted <- as.character(df$predicted)
在使用该ifelse
功能之前。
推荐阅读
- php - 高级自定义字段过滤器 Wordpress
- javascript - 通过 javascript 重新加载页面
- mysql - 需要 sql 查询来搜索前 10 条记录
- android - java.io.FileNotFoundException(访问被拒绝)IDE致命错误
- python - 在 Series 列表中搜索最大值: ValueError: The truth value of a Series is ambiguous
- sql-server-2012 - 如何在 sql server 的表中插入来自平面文件 (.txt) 的日文(双字节)字符
- oracle - 计算每场比赛的百分比
- javascript - 61:61:语法错误:预期字符串,但发现脚本结尾。(-2741)
- php - 比较 SQL 请求中的两个日期
- sql-server - SQL 数据库备份失败