首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用tidyselect和正则表达式重命名R数据的列

用tidyselect和正则表达式重命名R数据的列
EN

Stack Overflow用户
提问于 2021-06-26 02:36:33
回答 2查看 240关注 0票数 0

我有一个dataframe,它的列名是编号和一些复杂文本的组合:

  1. A1.你好,

  1. A1a.祝您愉快,

.

  1. Z7d.其他一些标题

现在我只想保留"A1.“、"A1a.”、"Z7d.",删除前面的数字和结尾的文本。你知道如何用tidyselectregex做这件事吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-26 02:42:06

你可以用这个正则表达式-

代码语言:javascript
复制
names(df) <- sub('\\d+\\.\\s+([A-Za-z0-9]+).*', '\\1', names(df))
names(df)
#[1] "A1"  "A1a" "Z7d"

如果您想要一个rename_with答案,也可以在tidyverse中使用相同的正则表达式。

代码语言:javascript
复制
library(dplyr)
df %>% rename_with(~sub('\\d+\\.\\s+([A-Za-z0-9]+).*', '\\1', .))

#          A1        A1a        Z7d
#1  0.5755992  0.4147519 -0.1474461
#2  0.1347792 -0.6277678  0.3263348
#3  1.6884930  1.3931306  0.8809109
#4 -0.4269351 -1.2922231 -0.3362182
#5 -2.0032113  0.2619571  0.4496466

数据

代码语言:javascript
复制
df <- structure(list(`1. A1. Good day` = c(0.575599213383783, 0.134779160673435, 
1.68849296209512, -0.426935114884432, -2.00321125417319), `2. A1a. Have a nice day` = c(0.414751904860513, 
-0.627767775889949, 1.39313055331098, -1.29222310608057, 0.261957078465535
), `99. Z7d. Some other titles` = c(-0.147446140558093, 0.326334824433201, 
0.880910933597998, -0.336218174873965, 0.449646567320979)), 
class = "data.frame", row.names = c(NA, -5L))
票数 0
EN

Stack Overflow用户

发布于 2021-06-26 18:59:17

我们可以使用str_extract

代码语言:javascript
复制
library(stringr)
names(df) <- str_extract(names(df), "(?<=\\.\\s)[^.]+")
names(df)
[1] "A1"  "A1a" "Z7d"

数据

代码语言:javascript
复制
df <- structure(list(`1. A1. Good day` = c(0.575599213383783, 0.134779160673435, 
1.68849296209512, -0.426935114884432, -2.00321125417319), `2. A1a. Have a nice day` = c(0.414751904860513, 
-0.627767775889949, 1.39313055331098, -1.29222310608057, 0.261957078465535
), `99. Z7d. Some other titles` = c(-0.147446140558093, 0.326334824433201, 
0.880910933597998, -0.336218174873965, 0.449646567320979)), 
class = "data.frame", row.names = c(NA, -5L))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68138751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档