如何将每个值除以列表对象中每个元素的最大值
How to divide every value with the maximum value in each element in list object
我有xts格式的数据。数据包括对 650 只股票的 360 次月度观察。我将数据分散到年份中,这导致了一个包含 30 个元素(每年 1 个)的大型列表对象。现在,对于列表中每个元素中的每个股票值,我想将该值除以当年的最大值,即我在 tata motor 中有一只股票,我想将其 2005 年的每个值除以 2005 年的最大值.我正在复制以下代码。我把数据分成几年。但无法进一步做。
library(xts)
library(zoo)
library(PerformanceAnalytics)
## splitting the data into years
managers_years<-split(managers,f="years")
对于每个对象,将其转换为 data.frame
。对所有列应用转换并将其转换回 zoo
.
map
对所有对象应用一个函数。
fortify.zoo
将 zoo
对象转换为具有 Index
列的 data.frame
。
mutate_at
在多个列上应用一个函数。
read.zoo
将 data.frame
转换回 zoo
。
map(
managers_years,
function(df) {
df %>%
fortify.zoo() %>%
mutate_at(vars(-Index), ~. / max(., na.rm = TRUE)) %>%
read.zoo()
}
)
mutate_at
可以替换为更新的 across
语法。
map(
managers_years,
function(df) {
df %>%
fortify.zoo() %>%
mutate(across(-Index, ~. / max(., na.rm = TRUE))) %>%
read.zoo()
}
)
不转换成data frame也可以解决这个问题。在应用家庭功能的帮助下,可以解决这个问题。试试下面的代码
test<-lapply(managers_years,apply,2,function(x)x/max(x))
我有xts格式的数据。数据包括对 650 只股票的 360 次月度观察。我将数据分散到年份中,这导致了一个包含 30 个元素(每年 1 个)的大型列表对象。现在,对于列表中每个元素中的每个股票值,我想将该值除以当年的最大值,即我在 tata motor 中有一只股票,我想将其 2005 年的每个值除以 2005 年的最大值.我正在复制以下代码。我把数据分成几年。但无法进一步做。
library(xts)
library(zoo)
library(PerformanceAnalytics)
## splitting the data into years
managers_years<-split(managers,f="years")
对于每个对象,将其转换为 data.frame
。对所有列应用转换并将其转换回 zoo
.
map
对所有对象应用一个函数。fortify.zoo
将zoo
对象转换为具有Index
列的data.frame
。mutate_at
在多个列上应用一个函数。read.zoo
将data.frame
转换回zoo
。
map(
managers_years,
function(df) {
df %>%
fortify.zoo() %>%
mutate_at(vars(-Index), ~. / max(., na.rm = TRUE)) %>%
read.zoo()
}
)
mutate_at
可以替换为更新的 across
语法。
map(
managers_years,
function(df) {
df %>%
fortify.zoo() %>%
mutate(across(-Index, ~. / max(., na.rm = TRUE))) %>%
read.zoo()
}
)
不转换成data frame也可以解决这个问题。在应用家庭功能的帮助下,可以解决这个问题。试试下面的代码
test<-lapply(managers_years,apply,2,function(x)x/max(x))