R 将列名与另一个数据帧匹配并拆分为单独的数据帧

R 将列名与另一个数据帧匹配并拆分为单独的数据帧,r,R,我有一个数据帧df,看起来像这样: tex21.222 chic56.345 wa34.907 0.5 0.6 1.12 0.8 1.2 0.9 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,看起来像这样:

tex21.222   chic56.345  wa34.907
0.5         0.6         1.12
0.8         1.2         0.9
site_name   sample_name
tex_1       tex21.222
tex_1       tex23.234
chic_1      chic56.345 
wa_1        wa34.907
wa_2        wa24.277
我想根据另一个名为keys的数据帧将此数据帧划分为单独的数据帧,如下所示:

tex21.222   chic56.345  wa34.907
0.5         0.6         1.12
0.8         1.2         0.9
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_name进行匹配以获得site_name,2将具有相同site_name的所有列从df移动到单独的数据帧中

所以,最后,我希望有单独的数据帧,所有列都在tex_1中,所有列都在chic_1中,等等

如何执行此操作?

请尝试下一个代码:

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 
请尝试下一个代码:

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 
使用合并+堆栈+拆分的基本R选项

使用合并+堆栈+拆分的基本R选项


这正是我想要的,谢谢:@fifigoblin总是很乐意帮助你!这正是我想要的,谢谢:@fifigoblin总是很乐意帮助你!