[英]r Remove parts of column name after certain characters
我有一個包含數千列的大型數據集。 列名稱包括各種不需要的字符,如下所示:
col1_3x_xxx
col2_3y_xyz
col3_3z_zyx
我想從所有列名中刪除所有以“_3”開頭的字符串,以便保持干凈:
col1
col2
col3
對 5000 多列執行此操作的最有效方法是什么?
我們可以使用sub
sub("_3.*", "", df1[,1])
#[1] "col1" "col2" "col3"
這個答案肯定晚了,但以防萬一有人正在尋找解決方案
colnames(df1)[col] <- sub("_3.*", "", colnames(df1)[col])
如果您有多個列:
for ( col in 1:ncol(df1)){
colnames(df1)[col] <- sub("_3.*", "", colnames(df1)[col])
}
我們可以嘗試使用正則表達式模式"^[^_]+(?=_)"
的str_extract
:
stringr::str_extract(c("col1_3x_xxx", "col2_3y_xyz", "col3_3z_zyx"), "^[^_]+(?=_)")
[1] "col1" "col2" "col3"
在模式中的位置:
第一個
^
匹配字符串的開頭;[^_]+
匹配一個或多個非_
字符,^_
表示除_
任何字符。(?=...)
代表前瞻,所以我們在_
之前尋找模式。
您可以使用
names(df) = gsub(pattern = "_3.*", replacement = "", x = names(df))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.