簡體   English   中英

如何重命名列名中的特定模式?

[英]How to rename the specific pattern in the column name?

我想用列名中的特定模式重命名一個值。
例如,

ex_before<-data.frame(A1B..123.=c('a', 'b', 'c'), 
               BCD43..24.=c('d', 'e', 'f'), 
               Q2E4W..532.=c(1,4,2),
               OI95J8..934.=c(9,3,9))
ex_before
  A1B..123. BCD43..24. Q2E4W..532. OI95J8..934.
1        a        d         1         9
2        b        e         4         3
3        c        f         2         9

ex_after<-data.frame('123'=c('a', 'b', 'c'), 
               '24'=c('d', 'e', 'f'), 
               '532'=c(1,4,2),
               '934'=c(9,3,9))
names(ex_after)<-gsub(x=names(ex_after), pattern="X", replacement="")
ex_after
  123 24 532 934
1   a  d   1   9
2   b  e   4   3
3   c  f   2   9

我嘗試了下面這種愚蠢的方法,但我想一定有更有效的方法。

names(ex_before)<-gsub(x=names(ex_before), pattern="\\w+\\..", replacement="")
names(ex_before)<-gsub(x=names(ex_before), pattern="\\.", replacement="")

ex_before
  123 24 532 934
1   a  d   1   9
2   b  e   4   3
3   c  f   2   9

任何人都可以建議其他方法嗎?

這個怎么樣?

names(ex_before) <- sub('.*\\.(\\d+)\\.$', '\\1', names(ex_before))
ex_before

#  123 24 532 934
#1   a  d   1   9
#2   b  e   4   3
#3   c  f   2   9

這基本上提取了句點之間的數字( "." )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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