从数据框列表中选择或绑定列

Posted

技术标签:

【中文标题】从数据框列表中选择或绑定列【英文标题】:selecting or binding colmns from a list of data frames 【发布时间】:2021-10-26 00:34:24 【问题描述】:

我有一个包含 10 个数据框的列表,如下所示(有数千行和 5 列)。我想用“target_id”(col1)创建一个新的数据框,这在所有10个数据框和其他两列“best_counts”“tpm”中都很常见。 请帮忙。

    [[1]]
                target_id length eff_length est_counts         tpm
    1   ENST00000415118.1      8    3.63786   0.000000   0.0000000
    
    [[2]]
                target_id length eff_length est_counts       tpm
    1   ENST00000415118.1      8    3.63786   0.000000  0.000000
    
    [[3]]
                target_id length eff_length est_counts       tpm
    1   ENST00000415118.1      8    3.63786   0.000000  0.000000

谢谢,

我想要输出类似下面的内容 - 例如。连接数据帧[[1]]和[[2]]的est_counts和tpm

                    [[1]]           [[1]]      [[2]]             [[2]]
'target_id'        'est_counts'     'tpm'      'est_counts'      'tpm'
ENST00000415118.1   0.000000        0.0000000  0.000000           0.0000000

【问题讨论】:

我意识到我没有很好地解释我的问题,抱歉。我想保持我的 'target_id' 不变,并且在它旁边的所有 10 个 'est_counts' 和 'tpm' 在一个数据框中。 所有数千行中的target_ids 是否唯一? 所有 10 个数据帧中的target_ids 是否相同? 'target_id' 行在数据框中是唯一的 - 但数据框中的行数与其他数据框中的不同。我想要这个 'target_id' 常量,并且在所有 (10) 'est_counts' 'tpm' 旁边,它们的文件名作为标识符。所以在某些情况下,数据框中不存在 'target_id' 所以 NA 或空白可以放置。 【参考方案1】:

您可以创建要保留的列名向量,使用lapply 选择列并将数据集与Reduce 合并。

keep_cols <- c('target_id', 'est_counts', 'tpm')
result <- Reduce(merge, lapply(list_data, `[`, keep_cols))

【讨论】:

谢谢,但意识到我没有很好地解释我的问题,抱歉。我想保持我的 'target_id' 不变,并且在它旁边的所有 10 个 'est_counts' 和 'tpm' 在一个数据框中。 谢谢,但它导致了一个数据帧('target_id'、'est_counts'、'tpm')【参考方案2】:

此变体的工作方式与 Ronak Shah 的回答基本相同;它只是负责添加必要的merge 参数以指定by 应合并哪个列以及排列的列应获得哪个名称​​suffixes - 原始列表是@ 987654322@:

cols = c("target_id", "est_counts", "tpm")
incol = function () paste(".", col<<-col+1, sep="")  # generate columns number
col = 0                                 # don't forget to reset columns number
Reduce(function (x, y) merge(x, y, "target_id", suffixes=c(incol(), incol())), lapply(l, `[`, cols))

【讨论】:

以上是关于从数据框列表中选择或绑定列的主要内容,如果未能解决你的问题,请参考以下文章

支持除列表视图或列表框之外的数据绑定的 XAML 控件

使用 udf 以编程方式从数据框中选择列

如果仅句子包含搜索列表中的任何关键字,则从数据框文本列中选择句子

如何从列表框绑定 Windows Phone 7 中选择一个项目

通过在下拉列表中选择数据库列调用 jsp 进行自动建议搜索框

Spark数据框选择该行的任何列中至少有一个null或空白的行