【发布时间】:2016-04-25 19:42:33
【问题描述】:
我的数据是这样的
win_loss_table<- data.frame(Player = c("A","B","C","D","E","A","C"),Status = c("A","C","D","Draw","E","C","D"))
> win_loss_table
Player Status
1 A A
2 B C
3 C D
4 D Draw
5 E E
6 A C
7 C D
转换后的表格应如下所示
desired_table <- data.frame(Player = c("A","B","C","D","E","A","C"), Status= c("Won","Lost","Lost","Draw","W0n","Lost","Lost"))
> desired_table
Player Status
1 A Won
2 B Lost
3 C Lost
4 D Draw
5 E Won
6 A Lost
7 C Lost
但是使用下面的代码我得到一个这样的数据框,这是不正确的
incorrect_table<- data.frame(Player = c("A","B","C","D","E","A","C"),Status=as.factor(ifelse(win_loss_table$Status == "Draw","Draw",ifelse(win_loss_table$Player %in% win_loss_table$Status,"Won","Lost"))))
>incorrect_table
Player Status
1 A Won
2 B Lost
3 C Won
4 D Draw
5 E Won
6 A Won
7 C Won
任何关于我哪里出错的帮助将不胜感激
【问题讨论】:
-
我认为问题出在:
ifelse(win_loss_table$Player %in% win_loss_table$Status,"Won","Lost"),它不会将值与值进行比较,而是在第二个列表win_loss_table$Status中查看第一个列表 (win_loss_table$Player) 中的每个值。如答案所示,一个简单的==就可以完成这项工作。
标签: r