将R中的值与函数进行比较

时间:2017-12-04 19:08:57

标签: r if-statement compare

这是上一篇文章的后续内容:compare values in R when within a string of letters

我需要检查 CURRENT_ID 的值是否等于或等于 CURRENT_TEXT_1 CURRENT_TEXT_2 的值,当 CURRENT_TEXT_1 或 CURRENT_TEXT_2 等于DISPLAY_BOUNDARY。如果是,那么我需要在 OUTPUT 列中输入值1,否则值为零。

以下是我的数据文件( df )的一些示例行以及我想要获得的输出:

 PARTICIPANT     ITEM   CONDITION      CURRENT_TEXT_1               CURRENT_TEXT_2                 CURRENT_ID            OUTPUT
 ppt01          1         1            DISPLAY_BOUNDARY 1 the       iaRegion 4 rd 0 x width 333    7                     0
 ppt01          3         1            iaRegion 2 rd 0 x width 1    DISPLAY_BOUNDARY 9 a           11                    0
 ppt01          4         2            DISPLAY_BOUNDARY 2 aware     iaRegion 6 rd 0 x width 768    3                     1
 ppt01          6         3            DISPLAY_BOUNDARY 3 door      iaRegion 8 rd 0 x width 534    4                     1
 ppt01          9         4            DISPLAY_BOUNDARY 6 in        iaRegion 9 rd 0 x width 924    5                     1
 ppt01          48        5            DISPLAY_BOUNDARY 6 the       iaRegion 10 rd 0 x width 712   8                     0
 ppt02          3         4            iaRegion 14 rd 0 x width 756 DISPLAY_BOUNDARY 15 put        17                    0
 ppt02          7         5            iaRegion 1 rd 0 x width 334  DISPLAY_BOUNDARY 1 where       3                     0
 ppt02          8         6            DISPLAY_BOUNDARY 3 At        iaRegion 2 rd 0 x width 215    5                     0
 ppt02          35        2            iaRegion 3 rd 0 x width 524  DISPLAY_BOUNDARY 1 outside     2                     1
 ppt03          10        1            iaRegion 11 rd 0 x width 190 DISPLAY_BOUNDARY 2 school      4                     0
 ppt03          56        1            DISPLAY_BOUNDARY 8 blue      iaRegion 11 red 0 x width 383  9                     1

这样做是否正确:

ct3 <- as.numeric(gsub("DISPLAY_BOUNDARY ([0-9]+).*","\\1",df$CURRENT_TEXT_1))  
ct4 <- as.numeric(gsub("DISPLAY_BOUNDARY ([0-9]+).*","\\1",df$CURRENT_TEXT_2))

df$OUTPUT <- as.numeric(mapply(function(id,x1,x2,x3,x4) id %in% c(x1+1,x2+1,x1,x2), as.numeric(df$CURRENT_ID),ct3,ct4,ct3,ct4))

如果我需要输入x3和x4,我不确定function(id,x1,x2,x3,x4),如果我需要写两次ct3和ct4,我不确定,ct3,ct4,ct3,ct4)

0 个答案:

没有答案