根据另一个数据框中的值在一个数据框中查找值

时间:2019-02-22 17:28:43

标签: r dataframe

我要对数据框,比如说A和B。

表A的构造如下:

ID a  b  c  d
1  NA NA NA NA 
2  NA NA NA NA
3  NA NA NA NA
4  NA NA NA NA 

表B的结构如下:

A B
a 1
a 2
a 3
b 2
b 6
b 8
b 9
c 1
c 6
c 11
d 5
d 4

如果表B中的1(列B)与a(列A)相关联,我基本上想对ID更改NA 1(表A)进行操作。

我不确定这是最好的方法,也许使用矩阵会更简单。

1 个答案:

答案 0 :(得分:0)

考虑要将B转换为具有1的密集表(如果在B中存在该组合)。您可以通过识别B是相同的数据,但将value的单元格遗漏来做到这一点。我们需要将其添加进来,然后spread从长到宽转换:

library(tidyverse)
tbl_b <- tibble(
  A = c("a", "a", "a", "b", "b", "b", "b", "c", "c", "c", "d", "d"),
  B = c(1, 2, 3, 2, 6, 8, 9, 1, 6, 11, 5, 4)
)

tbl_b %>%
  mutate(value = 1) %>%
  spread(A, value)
#> # A tibble: 9 x 5
#>       B     a     b     c     d
#>   <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1     1     1    NA     1    NA
#> 2     2     1     1    NA    NA
#> 3     3     1    NA    NA    NA
#> 4     4    NA    NA    NA     1
#> 5     5    NA    NA    NA     1
#> 6     6    NA     1     1    NA
#> 7     8    NA     1    NA    NA
#> 8     9    NA     1    NA    NA
#> 9    11    NA    NA     1    NA

reprex package(v0.2.1)于2019-02-22创建