R if语句比较字符串

时间:2016-08-17 14:58:36

标签: r string if-statement strcmp

我正在尝试使用比较字符串的if语句在R中创建一个计算字段,这在Excel中很容易,但我无法在R中找到它.Excel中的公式如下所示:

=IF(AND(E2<>"Accepted", B2=B3,E3="Accepted" ),  -(F2-F3),"")

其中B列是9位数字列表(即200100111),列F包含日期。我在R中写的代码如下:

if(df_srt$NUMBER==shift(df_srt$NUMBER, 1L, type="lead") && df_srt$DESCRIPTION != "Accepted" && shift(VA_df_srt$DESCRIPTION, 1L, type="lead")=="Accepted") {1} else {0}

然后我意识到if语句只比较矢量长度为1,因此不起作用。我可以单独比较字符串以获得“TRUE”值,如下所示:

TEST2calc <- df_srt$NUMBER==shift(df_srt$NUMBER, 1L, type="lead")

但我希望进行这三次比较,然后分配一个值,如果它们都是真的。

由于

1 个答案:

答案 0 :(得分:1)

如您所述,if仅比较单个值。对于矢量化版本,您需要使用ifelse,同样需要切换到&&||的矢量化版本,&和{{1}分别。

因此:

|

或者,您可以使用以下事实:逻辑值可以通过ifelse(df_srt$NUMBER == shift(df_srt$NUMBER, 1L, type = "lead") & df_srt$DESCRIPTION != "Accepted" & shift(VA_df_srt$DESCRIPTION, 1L, type = "lead") == "Accepted", 1, 0) 转换为数字1和0:

as.numeric