簡體   English   中英

r 刪除某些字符后的部分列名稱

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM