匹配两个数据框/行和列的行和列并复制值

时间:2019-08-09 20:12:54

标签: r dataframe data-science tidyverse tibble

我有两个数据框/小节。

第一个(除第一列外,以零初始化):

> df_
# A tibble: 33 x 101
   sample_id  SOM1  SOM2  SOM3  SOM4  ..... SOM100
   <fct>     <dbl> <dbl> <dbl> <dbl> 
 1 1             0     0     0     0 
 2 2             0     0     0     0
 3 3             0     0     0     0
 4 4             0     0     0     0     
 5 5             0     0     0     0     
.
.
.  33

第二个:

> sum
# A tibble: 3,300 x 3
# Groups:   sample_id [33]
   sample_id cluster_id count
   <fct>     <chr>      <int>
 1 1         SOM1         875
 2 1         SOM2        1102
 3 1         SOM3        1028
 4 1         SOM4         925
 5 1         SOM5       10164
 6 1         SOM6        5425
 7 1         SOM7        1593
 8 1         SOM8         290
 9 1         SOM9        6180
10 1         SOM10      10850
# … with 3,290 more rows

我想将"sample_id"的{​​{1}}匹配到sum的{​​{1}},还要匹配"sample_id"的{​​{1}}到{{1 }},如果两个条件的匹配都为true,则将df_的{​​{1}}列中的对应值复制到"cluster_id"中发现条件为true的单元格中。最后,我想用sum的{​​{1}} Cloumn中的值替换df_中的所有零。

我希望最终结果看起来像下面的数据框。

"count"

任何帮助或建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果我理解的正确,您正在尝试获取sum数据帧并将其转换为与_df相同的视图(切勿像这样调用数据帧sum最常见的R函数)。

您应该可以使用:

library(tidyverse)
sum %>% spread(key = 'cluster_id', value = 'count')