如何从r中的大量数据帧中选择特定列
我正在处理303个数据帧,每个数据帧都有不同的名称,并且包含不同的列。我想要的是从这些数据帧中选择名称包含“\u CD”和“\u NM”的特定列。有什么好办法处理吗 注意,这些数据帧未列出 下面是一个例子(我不能拿出真实的数据,但用类似的格式给你看假数据) 表1名称:广告项目如何从r中的大量数据帧中选择特定列,r,R,我正在处理303个数据帧,每个数据帧都有不同的名称,并且包含不同的列。我想要的是从这些数据帧中选择名称包含“\u CD”和“\u NM”的特定列。有什么好办法处理吗 注意,这些数据帧未列出 下面是一个例子(我不能拿出真实的数据,但用类似的格式给你看假数据) 表1名称:广告项目 列:CKND_CLSF_CD、subc_CD、ITEM_CNT、UPDT_DT 表2名称:BLAD_PE_XEXM 列:PT_SBST_NO、CEXM_NM、CEXM_CD、CEXM_RST、CEX_RSLT_CMN
- 列:CKND_CLSF_CD、subc_CD、ITEM_CNT、UPDT_DT
- 列:PT_SBST_NO、CEXM_NM、CEXM_CD、CEXM_RST、CEX_RSLT_CMNT、LDNG_DT
- 栏目:PT_SBST_NO、RGST_DT、EDU_DGRE_CD、DRNK_YN、JOB_KIND_CD
Table | column | CD
-----------------------------------
AD_ITEM_CNT | CKND_CLSF_CD | 01
AD_ITEM_CNT | CKND_CLSF_CD | 02
AD_ITEM_CNT | CKND_CLSF_CD | 03
AD_ITEM_CNT | CKND_CLSF_CD | 04
BLAD_PE_XEXM | CEXM_CD | AVS
BLAD_PE_XEXM | CEXM_CD | ABE
BLAD_PE_XEXM | CEXM_CD | CVS
BLAD_PE_XEXM | CEXM_CD | UVS
正如@r2evans所说,我非常鼓励您首先将所有
数据.frame
加载到一个列表中。但是,如果您没有其他选择,您可以这样做:
首先,让我们创建5个data.frame
s:
for (i in 1:5) {
set.seed(123)
assign(paste0("y",i), data.frame(A_CD = rnorm(1),
A_NM = rnorm(1),
A_GK = rnorm(1)))
}
接下来,我们可以创建所有变量的列表(使用ls()
)和过滤器(filter
)仅用于数据。frames
:
dfs <- Filter(function(x) is(x, "data.frame"), mget(ls()))
输出:
dfs
$y1
A_CD A_NM
1 -0.5604756 -0.2301775
$y2
A_CD A_NM
1 -0.5604756 -0.2301775
$y3
A_CD A_NM
1 -0.5604756 -0.2301775
$y4
A_CD A_NM
1 -0.5604756 -0.2301775
$y5
A_CD A_NM
1 -0.5604756 -0.2301775
是的,有。您能否创建一个最小的可复制示例,以便人们更容易测试他们的代码?也许还可以展示一下您尝试过的内容?我希望您将所有303帧都包含在一个列表中
。。。如果不是,我强烈建议。。。不,催促你考虑:这可能像lapply(框架列表,函数(x)x[,grepl(“cy”,names(x)),drop=FALSE])
@r2evans一样简单,或者使用my\u list AllanCameron将全局工作区中的所有数据框架列成一个列表,在我看来,这是一种可以接受的方法,可以使用框架列表。。。但是,如果后面有任何分配的将它们重新分配给全局,那么我肯定是“出局”了。很抱歉反应太晚。我添加了示例并指定了此过程的目标。谢谢你的关注。
dfs
$y1
A_CD A_NM
1 -0.5604756 -0.2301775
$y2
A_CD A_NM
1 -0.5604756 -0.2301775
$y3
A_CD A_NM
1 -0.5604756 -0.2301775
$y4
A_CD A_NM
1 -0.5604756 -0.2301775
$y5
A_CD A_NM
1 -0.5604756 -0.2301775