通过提取列名中的模式重命名dataframe的所有列
我有一个关于股市数据的数据框,我想从所有列名中删除一个特定的模式。这是我的数据帧:通过提取列名中的模式重命名dataframe的所有列,r,rename,R,Rename,我有一个关于股市数据的数据框,我想从所有列名中删除一个特定的模式。这是我的数据帧: ADS.DE.Open ADS.DE.High ADS.DE.Low ADS.DE.Close ADS.DE.Volume ADS.DE.Adjusted 2017-01-02 149.75 151.95 149.35 151.30 445138 143.6014 2017-01-03 150.90 15
ADS.DE.Open ADS.DE.High ADS.DE.Low ADS.DE.Close ADS.DE.Volume ADS.DE.Adjusted
2017-01-02 149.75 151.95 149.35 151.30 445138 143.6014
2017-01-03 150.90 151.05 148.80 149.25 641172 141.6557
2017-01-04 149.40 149.40 146.35 146.40 618563 138.9507
2017-01-05 145.25 145.80 143.50 144.30 739147 136.9576
2017-01-06 143.80 145.05 142.95 144.80 641054 137.4322
现在我想从所有列中删除“ADS.DE”
模式。这样我就得到了流动输出:
open high low close volume adjusted
2017-01-02 149.75 151.95 149.35 151.30 445138 143.6014
2017-01-03 150.90 151.05 148.80 149.25 641172 141.6557
2017-01-04 149.40 149.40 146.35 146.40 618563 138.9507
2017-01-05 145.25 145.80 143.50 144.30 739147 136.9576
2017-01-06 143.80 145.05 142.95 144.80 641054 137.4322
我已经有了一个有效的解决方案:
ADS.DE%>%
重命名(.dots=setNames(names(.)、tolower(gsub(str_c(“ADS.DE”)、“”、“”、names(.“”)“”))
但我的问题是,我有很多数据帧具有相同的结构和相同的问题。我现在打算将我的工作解决方案放入map函数中。问题将出现在用粗体标记的零件上:
ADS.DE%>%
重命名(.dots=setNames(names(.),tolower(gsub)(str_c(
“ADS.DE”,“),”,“”,names(.;))
我主要关心的是如何将我的解决方案放入映射函数中。
与以下内容类似:
DAX%rename((.dots=setNames(name)()、tolower(gsub(str_c(替换(x),”)、“”、names(.)
有人能帮我解决我的问题吗?rename()
已被弃用,我也不会使用rename()
<代码>设置名称()
效果更好
库(tidyverse)
df%
设置名称(名称(%)>%str\u删除(“.+\..+\.”)
尝试在数据帧的names()上使用str_replace from stringr
library(stringr)
names(df)<-str_replace(names(df), "ADS.DE", "")
库(stringr)
名称(df)这将对数据帧列表应用更改并解决您的问题:
df1 <- data.frame(ABS.DE.x = "a", ABS.DE.y = "b")
df2 <- data.frame(ABS.DE.x = "c", ABS.DE.y = "d")
fix_names <- function(list_df){
lapply(list_df, function(df){
setNames(df, stringr::str_replace(names(df), ".+\\..+\\.", ""))
})
}
a <- fix_names(list(df1, df2))
a[[1]]
df1我找到了一个有效的解决方案:
map(mget(DAX),function(x)
x%>%rename\u all(str\u remove,“.+\..+\\.”%>%rename\u all(tolower)
)
要删除的字符串是否始终与数据框的名称匹配?@BenjaminYe是字符串始终与数据框的名称匹配dataframe@GKi问题是我有30个不同名称的数据帧ADS.DE
只是一个示例,您可以使用sub('.\\.','',names(df))
。无需指定任何内容quantmod软件包允许您引用Op(ADS.DE)
,Lo(ADS.DE)
,Hi(AD.DE)
,Cl(ADS.DE)
和Vo(ADS.DE)
,因此您可能不需要更改名称。