繁体   English   中英

如何根据条件添加列?

[英]How to add column based on condition?

我知道以前有关于此的帖子,但是提供的建议在我的情况下不起作用(

以下是我正在使用的数据框。 我想做的是添加另一列“ HomeWin”,它将使用FTR列中的信息,如果FTR = H,则放置“ W”,如果FTR = A,则放置“ L”,如果FTR = D,则放置“ D”。

 HomeTeam       AwayTeam      FTR 
1     Arsenal       Coventry   A
2 Aston Villa            QPR   H
3     Chelsea      Blackburn   A
4   Liverpool Sheffield Weds   H
5    Man City          Leeds   D
6   Newcastle      Tottenham   A

想要的结果是:

 HomeTeam       AwayTeam      FTR  HomeWin
1     Arsenal       Coventry   A     L
2 Aston Villa            QPR   H     W
3     Chelsea      Blackburn   A     L
4   Liverpool Sheffield Weds   H     W
5    Man City          Leeds   D     D
6   Newcastle      Tottenham   A     L

为了更加清晰,下面是我编写的代码(错误且不完整),但要使内容更清楚:

season_1993_1994[, HomeWin := ifelse(FTR %in% c("A"), "L")]

提前非常感谢!!!

您也可以使用qdap软件包中的multigsub:

df$HomeWin <- multigsub(c("A", "H", "D"), c("L", "W", "D"), df$FTR)
df$HomeWin = df$FTR
df$HomeWin[df$HomeWin == "A"] = "L"
df$HomeWin[df$HomeWin == "H"] = "W"

但是,正如评论中所述,您不能仅添加此列并引用FTR列,而只需检查“ A”和“ H”即可。 这样可以毫无理由地节省您需要第四栏的时间

您还可以使用dplyr包并基于将用作查找表的数据帧执行left_join。 只需在数据框之后添加此代码(假设您的数据框称为df):

library(dplyr)
left_join(df,data.frame(FTR = c("A","H","D"),Homewin = c("L","W","D")))

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM