我正在尝试将添加的“列”重命名为更大列表中嵌入的多个列表。
例如,
data<- data.frame(
ID = c(10,20,20,20,20,30,30),
Sales = c(50,40,45,40,40,40,50),
Distribution = c(2,4,5,5,4,4,5)
)
我首先使用split创建列表列表。
SplitData <- split(data,data$ID)
这是我调用SplitData时数据的样子。
‘10’
Sales 50
Distribution 2
‘20’
Sales 40,45,40,40
Distribution 4,5,5,4
‘30’
Sales 40,50
Distribution 4,5
然后,我编写了一个函数来划分列表中的两个变量,但似乎无法弄清楚如何使(i[, "Sales"] / i[, "Distribution"])
看起来像“ AjustedSale”。
AjustedDis <- function(i){ cbind(i[,],(i[, "Sales"] / i[, "Distribution"]))}
SplitData2 <- lapply(SplitData[1:length(SplitData)], AjustedDis)
这是我调用SplitData2时发生的事情。
‘10’
Sales 50
Distribution 2
(i[, "Sales"] / i[, "Distribution"]) 25
‘20’
Sales 40,45,40,40
Distribution 4,5,5,4
(i[, "Sales"] / i[, "Distribution"]) 10,9,8,10
‘30’
Sales 40,50
Distribution 4,5
(i[, "Sales"] / i[, "Distribution"]) 10,10
我已经尝试过了:
division<-function(i){(i[, "Sales"] / i[, "DisIndex"])}
AjustedSales<-lapply(SplitData[],division)
AjustedDisV2<-function(i){ cbind(i[,],AjustedSales[,])}
SplitData3<-lapply(SplitData[1:length(SplitData)], AjustedDisV2)
但是它并不能满足我的期望。