我有一个包含数千列的大型数据集。列名包括各种不需要的字符,如下所示:
col1
col2
col3
我想删除所有列名称中以“_3”开头的所有字符串,并保留干净:
{{1}}
为5000+列执行此操作的最有效方法是什么?
答案 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])
}