Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过提取列名中的模式重命名dataframe的所有列_R_Rename - Fatal编程技术网

通过提取列名中的模式重命名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)
,因此您可能不需要更改名称。