【发布时间】:2013-01-04 16:53:17
【问题描述】:
可能重复:
Processing the list of data.frames with “apply” family of functions
我有一个包含六个数值变量 V1、V2、V3 和 V1.lag、V2.lag、V3.lag 的数据框。
注意:我的真实数据集有更多变量,但我仅使用 3 进行说明!
我希望能够自动(无需硬编码)运行所有 V 变量(不是滞后变量)并通过将每个 V 变量与对应的滞后变量相除来创建 V1.over.V1.lag 变量。
df<-data.frame(matrix(rnorm(216),72,6));
colnames(df) <- c("v1.raw", "v2.raw", "v3.raw", "v1.lag", "v2.lag", "v3.lag");
提前致谢
**编辑:我想出了如何识别“原始”列和“滞后”列**
raws <- sapply( names(df), function(x){ unlist(strsplit(x, "[.]"))[2] == "raw" } ); ## which are raw factors
lags <- sapply( names(df), function(x){ unlist(strsplit(x, "[.]"))[2] == "lag" } ); ## which are lagged factors
但我仍然不知道如何将所有原始因素与其滞后因素分开
which(raws);
会给我指数,但我如何将它们与滞后结合成新的因素?
df[which(raws)] / df[which(lags)]
没用
【问题讨论】:
-
你试过什么?您可以将your previous question 中的答案扩展到此吗?你在哪里卡住?根据我的经验,如果您在寻求帮助之前与事物斗争一段时间,您将更快地学习 R 并最终获得更深入的理解。你向我们展示的战斗越多,我们就越愿意帮助我们!
-
首先尝试更正您的问题的代码,尝试将您的 dd 更改为 df 并可能删除 dim1 和 dim2 列,这只是令人困惑。
-
感谢您的评论。我编辑了主要问题以贡献我代码中唯一有效的部分
标签: r dataframe apply lapply sapply