首页 > 解决方案 > 将列名与另一个数据框匹配并拆分为单独的数据框

问题描述

我有一个df看起来像这样的数据框():

tex21.222   chic56.345  wa34.907
0.5         0.6         1.12
0.8         1.2         0.9

我想根据另一个名为 的数据帧将此数据帧划分为单独的数据帧,keys如下所示:

site_name   sample_name
tex_1       tex21.222
tex_1       tex23.234
chic_1      chic56.345 
wa_1        wa34.907
wa_2        wa24.277

对于 的每一列df,我想(1)将列名与sample_namein匹配keys以获取site_name,(2)将所有具有相同site_namefrom的列移动df到单独的数据框中。

所以,最后,我希望拥有单独的数据框,其中所有列都属于tex_1,所有列属于chic_1等等。

我怎样才能做到这一点?

标签: r

解决方案


尝试下一个代码:

library(dplyr)
library(tidyr)
#Code
data <- df %>% pivot_longer(everything()) %>%
  left_join(keys,by = c('name'='sample_name'))
#Split
List <- split(data,data$site_name)
List <- lapply(List,function(x) {x$site_name<-NULL;x})
list2env(List,envir = .GlobalEnv)

输出:

List
$chic_1
# A tibble: 2 x 2
  name       value
  <chr>      <dbl>
1 chic56.345   0.6
2 chic56.345   1.2

$tex_1
# A tibble: 2 x 2
  name      value
  <chr>     <dbl>
1 tex21.222   0.5
2 tex21.222   0.8

$wa_1
# A tibble: 2 x 2
  name     value
  <chr>    <dbl>
1 wa34.907  1.12
2 wa34.907  0.9 

推荐阅读