r删除某些字符后的列名称部分

时间:2016-06-13 23:27:31

标签: r

我有一个包含数千列的大型数据集。列名包括各种不需要的字符,如下所示:

col1
col2
col3

我想删除所有列名称中以“_3”开头的所有字符串,并保留干净:

{{1}}

为5000+列执行此操作的最有效方法是什么?

3 个答案:

答案 0 :(得分:5)

我们可以使用sub

sub("_3.*", "", df1[,1])
#[1] "col1" "col2" "col3"

答案 1 :(得分:2)

我们可以使用正则表达式模式 <property> <name>yarn.resourcemanager.scheduler.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value> </property> 尝试<property> <name>yarn.scheduler.capacity.maximum-am-resource-percent</name> <value>1.0</value> <description> Maximum percent of resources in the cluster which can be used to run application masters i.e. controls number of concurrent running applications. </description> </property>

str_extract

模式中的位置:

  

第一个"^[^_]+(?=_)"匹配字符串的开头; stringr::str_extract(c("col1_3x_xxx", "col2_3y_xyz", "col3_3z_zyx"), "^[^_]+(?=_)") [1] "col1" "col2" "col3" 匹配一个   或更多非^个字符,[^_]+表示除_之外的任何字符。 ^_   代表前瞻,所以我们正在寻找_之前的模式。

答案 2 :(得分:0)

这个答案肯定晚了,但是以防万一有人在寻找解决方案

colnames(df1)[col] <-  sub("_3.*", "", colnames(df1)[col])

如果您有多列:

for ( col in 1:ncol(df1)){
    colnames(df1)[col] <-  sub("_3.*", "", colnames(df1)[col])
}