首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态重命名列

动态重命名列
EN

Stack Overflow用户
提问于 2018-06-06 16:28:07
回答 2查看 544关注 0票数 0

我是新的R (SAS程序员),并希望摆脱“循环”的心态。

假设我在data.frame中有以下列

代码语言:javascript
复制
1999, 1999_1, 1999_2, 2000, 2000_1, 2001_2, 2002, 2000_1, etc 

我要做的是编写一个函数,循环并重命名它们,如下所示:

代码语言:javascript
复制
1999_A, 1999_B, 1999_C, 2000_A, etc

有什么不需要循环的方法吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-06 16:56:46

查看粘贴功能。您将希望通过在每个列名的前四个字符上选择,去掉每个列名中的下划线。然后你会想粘贴"_A“在1,4,7,.列。然后粘贴"_B“在2,5,8,.列。然后粘贴"_C“在第3,6,9,.列。您可以使用索引选择要使用的列,并且可以将其设置为从值开始,滞后为3。

代码语言:javascript
复制
colnames(dataframe) <- paste(colnames(dataframe)[indices],"text here")
票数 0
EN

Stack Overflow用户

发布于 2018-06-07 01:17:42

这是一种方法。

代码语言:javascript
复制
library("gsubfn")
x<-c("1999","1999_1","1999_2","2000","2000_1","2000_2")
x<-paste(x,"_",sep="")
x
[1] "1999_"   "1999_1_" "1999_2_" "2000_"   "2000_1_" "2000_2_"

find_replace<-list("_" = "_A", "_1_" = "_B", "_2_" = "_C")
gsubfn(paste(names(find_replace),collapse="|"),find_replace,x)

[1] "1999_A" "1999_B" "1999_C" "2000_A" "2000_B" "2000_C"

在你的例子中,x = colnames(df)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50725269

复制
相关文章

相似问题

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