从数据框列表中选择或绑定列
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_id
s 是否唯一? 所有 10 个数据帧中的target_id
s 是否相同?
'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))
【讨论】:
以上是关于从数据框列表中选择或绑定列的主要内容,如果未能解决你的问题,请参考以下文章
如果仅句子包含搜索列表中的任何关键字,则从数据框文本列中选择句子
如何从列表框绑定 Windows Phone 7 中选择一个项目