使用R删除每个名称中包含常用短语的列

时间:2015-09-11 18:58:10

标签: r

我正在使用人口普查局的数据,该数据提供了误差的估计和余量。它作为Excel文件下载,其中包含以下列名称:

HC01_EST_VC01
HC01_MOE_VC01
HC02_EST_VC01
HC02_MOE_VC01
HC03_EST_VC01
HC03_MOE_VC01
HC01_EST_VC03
HC01_MOE_VC03
etc.

一旦我将表读入R(使用read.csv),我如何删除/删除误差范围列(例如HC01_MOE_VC01, HC02_MOE_VC01)?我已经阅读了有关使用常见起始片段但不常见的名称内片段删除列的信息。

我会很感激的建议。谢谢!

1 个答案:

答案 0 :(得分:3)

我们可以使用grep对不是'MOE'的列进行子集化。 grepl的输出是逻辑向量。我们得到与匹配模式_MOE_和FALSE的子串相对应的TRUE值,以便不匹配。我们否定它(!),以便TRUE变为FALSE和FALSE为TRUE,以便所有没有_MOE_的列名都为TRUE。这可用于对列进行子集化。

df1[!grepl('_MOE_', names(df1))]