【发布时间】:2018-06-06 14:52:46
【问题描述】:
关注a previous question I asked, I got an awesome answer。
这里是一个简短的总结: 我想根据南非数据计算几年的多维发展指数。我的列表由每年的个人信息组成,所以基本上 df1 是关于第 1 年的,而 df2 是关于第 2 年的。
df1<-data.frame(var1=c(1, 1,1), var2=c(0,0,1), var3=c(1,1,0))
df2<-data.frame(var1=c(1, 0,1), var2=c(1,0,1), var3=c(0,1,0))
mylist <-list (df1,df2)
var1 可能是每个人的宗教立场,var2 可能是她在上次全国大选中的投票方式,等等。在我非常简单的例子中,我每年都有 3 个不同人的数据。 从那里,我根据一些变量(不是全部)计算一个索引 你可以在这里找到一个非常简化的工作索引函数,只有 3 个变量中的 2 个,分别命名为 dimX 和 dimY:
myindex <- function(x, dimX, dimY){
econ_i<- ( x[dimX]+ x[dimY] )
return ( (1/length(econ_i))*sum(econ_i) )
}
myindex(df1, "var2", "var3")
和
myindex2 = function(x, d) {
myindex(x, d[1], d[2])
}
然后,我有了要用于索引的变量数据框。我正在尝试计算多组变量的索引。
args <- data.frame(set1=c("var1", "var2"), set2=c("var2", "var3"), stringsAsFactors = F)
我希望得到如下结果:(a)list(set1 = list(df1, df2), set2 = (df1, df2))而不是 (b)list(df1 = list(set1, set2), df2 = list(set1, set2))。
案例 (a) 代表一个时间序列,这意味着我每年只有一组变量的索引结果列表。情况(b)相反,我对每组变量都有一年的索引结果。每个单独的结果都应该是一个唯一的数值。因此,我希望得到一个包含 2 个子列表 df1 和 df2 的列表,每个子列表包含 3 个数值。
有人建议我使用那个很棒的命令:
lapply(mylist, function(m) lapply(args, myindex2, x = m))
效果很好,但我得到的结果格式“错误”,即我展示的第二个 (b)。 我怎样才能得到按集合排序的结果(即案例 (a) 作为时间序列)而不是每年?
非常感谢您的帮助!
PJ
编辑:我设法找到了一个不能回答问题的解决方案,但仍允许我按所需顺序获取数据。 也就是说,我正在将我的列表列表转换为我简单地转置的矩阵。
【问题讨论】:
-
一些注释:您在最后一行中所做的时间序列注释是模糊的。还请提供更详细的视觉效果来描述您想要的内容。你需要通过视觉来明确你的目标。例如:什么是“错误”格式,什么是“正确”格式?让读者尽可能容易理解你在说什么。
-
感谢您的回答。我编辑了我的帖子以使其尽可能清晰。如果我做错了,请随时告诉我。
-
在我或其他人回答您的问题之前,我有一个问题要问。如下所述。