根据另一个表创建条件列

时间:2020-09-30 17:04:58

标签: r dplyr conditional-statements

我有两个数据帧,Table1Table2

表1:

code
CM171
CM114
CM129
CM131
CM154
CM197
CM42
CM54
CM55

表2:

code;y;diff_y
CM60;1060;2.9
CM55;255;0.7
CM54;1182;3.2
CM53;1046;2.9
CM47;589;1.6
CM42;992;2.7
CM39;1596;4.4
CM36;1113;3
CM34;1975;5.4
CM226;155;0.4
CM224;46;0.1
CM212;43;0.1
CM197;726;2
CM154;1122;3.1
CM150;206;0.6
CM144;620;1.7
CM132;8;0
CM131;618;1.7
CM129;479;1.3
CM121;634;1.7
CM114;15;0
CM109;1050;2.9
CM107;1165;3.2
CM103;194;0.5

我想基于Table2中的值向Table1添加一列。我尝试使用dplyr

result <-Table2 %>%
         mutate (fbp = case_when(
         code == Table1$code ~"y",))

但这仅适用于几行。有谁知道为什么它不添加所有行?这些值不会重复。

1 个答案:

答案 0 :(得分:2)

尝试一下。看来==运算符只在检查一个值。相反,您可以使用%in%测试所有值。这里的代码:

#Code
result <-Table2 %>%
  mutate (fbp = case_when(
    code %in% Table1$code ~"y",))

输出:

    code    y diff_y  fbp
1   CM60 1060    2.9 <NA>
2   CM55  255    0.7    y
3   CM54 1182    3.2    y
4   CM53 1046    2.9 <NA>
5   CM47  589    1.6 <NA>
6   CM42  992    2.7    y
7   CM39 1596    4.4 <NA>
8   CM36 1113    3.0 <NA>
9   CM34 1975    5.4 <NA>
10 CM226  155    0.4 <NA>
11 CM224   46    0.1 <NA>
12 CM212   43    0.1 <NA>
13 CM197  726    2.0    y
14 CM154 1122    3.1    y
15 CM150  206    0.6 <NA>
16 CM144  620    1.7 <NA>
17 CM132    8    0.0 <NA>
18 CM131  618    1.7    y
19 CM129  479    1.3    y
20 CM121  634    1.7 <NA>
21 CM114   15    0.0    y
22 CM109 1050    2.9 <NA>
23 CM107 1165    3.2 <NA>
24 CM103  194    0.5 <NA>
相关问题