Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从r中的大量数据帧中选择特定列_R - Fatal编程技术网

如何从r中的大量数据帧中选择特定列

如何从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

我正在处理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_CMNT、LDNG_DT
表3名称:BLAD_MR_HLTH

  • 栏目: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