r - 将列名与另一个数据框匹配并拆分为单独的数据框
问题描述
我有一个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_name
in匹配keys
以获取site_name
,(2)将所有具有相同site_name
from的列移动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
推荐阅读
- php - 致命错误:调用未定义函数 random_bytes() 错误
- typescript - 尝试使用 Typescript 条件类型来缩小可以预期的值的可能组合
- node.js - 如何修复 node.js 和 mongoDB 无法返回信息
- c# - 基于构建变量触发 Azure DevOps 版本
- python - 我的 If 语句似乎不起作用
- log4j2 - Websphere Liberty:如何指定 log4j2 配置位置?
- python - 单选按钮导航和值存储
- node.js - 如何为电子版本 4.1.4 重建 zeromq.js 绑定?
- ios - 如何在 swift 中编写 if/else 语句,以便在 iOS 表格视图中单击特定单元格时,它会转到特定的 viewController
- swift - 检查隐私 - 仅在 iOS 中的照片库添加使用说明