从一个表中选择数据从另一个表中选择数据列,使用r

问题描述

我的数据表 tab 是 2000 x 500,y1 = col1,y2 = col2,y3 = col3 ...。 Y500 = col500。看图。

partial data table

我想对其中的一部分进行一些 PCA 工作,例如 y1 = col1、y22 = col22、y36 = col36、y41 = col41 等等。

单独的数据表 SM 包含列 ID,并引用我要考虑的主数据表(选项卡)中的列。有 200 个这样的条目。

SM 的图片如下。

Partial ID table

以下

fit.std <- prcomp(tab,scale.=T)

拉入所有列条目。

如果我要考虑 200 个特定的数据列,手动输入列号将非常耗时且容易出错。

谁能告诉我如何从列 ID(在数据表 SM 中)获取数据,在数据表选项卡中选择相应的列,然后包含在 fit.std 行中?

有没有办法在 SM 中接收数据,使我能够在较大的数据表选项卡中选择所需的列?换句话说,SM col1 对应tab col1,SM col22 对应tab col22,以此类推。

fit.std <- promo(c(ID$*),scale = TRUE)

其中 ID$* 包含我想与选项卡中的列匹配的数据表 SN 条目?

谢谢。

解决方法

好的,根据您更新的问题,您似乎想要对数据框 tab 进行子集化,只选择 SM$ID 中列出的列。

你可以这样做:

tab[,SM$ID]
,

我不确定您的要求到底是什么,但我会尽我所能完成您的任务。

假设 tab 是一个具有 2000 行和 500 列的数据框。而 SM 是一个数据框,其中 SM$ID 指的是 tab 中的列。

然后您可以使用以下方法获取 SM$ID 引用的列的列表:

list_of_cols <- lapply(SM$ID,function(x) tab[,x])

如果您想将此向量列表折叠(或“展平”)为单个向量,您可以执行以下操作:

single_vec <- unlist(list_of_cols)