[英]operate through nested lists in r
根据以下代码,我有一个嵌套列表:
cat <- c("A","A","B","B")
prod <- c("prod1","prod2","prod3","prod4")
families <- as.data.frame(cat, prod)
categories <- with(families,split(as.character(prod), cat))
sales <- list()
for(a in prod){
sales[[a]] <- runif(4)
}
sales <- lapply(categories, function(x) sales[x])
我希望获得每种产品在其类别中的销售额比例。
proportion_product1 <- sum(sales$A$prod1)/(sum(sales$A$prod1)+sum(sales$A$prod2))
用一个函数试试这个方法:
#Function
myfun <- function(x)
{
#Values
y <- lapply(x,sum)
z <- do.call(sum,y)
#Compute
a <- lapply(y,function(x) x/z)
return(a)
}
#Apply
lapply(sales,myfun)
输出:
$A
$A$prod1
[1] 0.6444069
$A$prod2
[1] 0.3555931
$B
$B$prod3
[1] 0.4644624
$B$prod4
[1] 0.5355376
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.