顺序聚合模型-data.frame
我正在尝试设计一个聚合过程。我试图避免“expand.grid”引起的问题,即向量长度过大 我设计了一个数据帧数据。最初,我必须对P1和V1以及V2和P2联合应用一个过程。一旦执行,P1、P2、V1和V2必须被删除,并且流程输出两个向量:P12和V12添加到数据帧数据,然后再次将流程应用到向量V12和P12以及V3和P3。因此,在删除V3和P3之前,应依次添加V123和P123,并将该过程重新应用于V123和P123以及V4和P4。数据框用NA或0填充 需要注意的是,我通常使用n个向量Pi和n个向量Vi 数据帧数据:顺序聚合模型-data.frame,r,combinations,R,Combinations,我正在尝试设计一个聚合过程。我试图避免“expand.grid”引起的问题,即向量长度过大 我设计了一个数据帧数据。最初,我必须对P1和V1以及V2和P2联合应用一个过程。一旦执行,P1、P2、V1和V2必须被删除,并且流程输出两个向量:P12和V12添加到数据帧数据,然后再次将流程应用到向量V12和P12以及V3和P3。因此,在删除V3和P3之前,应依次添加V123和P123,并将该过程重新应用于V123和P123以及V4和P4。数据框用NA或0填充 需要注意的是,我通常使用n个向量Pi和n个
P1 P2 P3 P4 V1 V2 V3 V4
1 0 0 0 0 0.34505340 0.9498 0.958886346 0.88
2 1 1 1 1 0.11640585 0.0338 0.012040961 0.04
3 2 2 2 2 0.09746205 0.0164 0.009259039 0.08
4 3 0 3 0 0.11484475 0.0000 0.019813654 0.00
5 4 0 0 0 0.32623395 0.0000 0.000000000 0.00
输出示例:
P12 V12
1 0 0.1851
2 1 0.1419
3 2 0.1794
4 3 0.1395
5 4 0.3659
6 5 -0.0045
7 6 -0.0141
亲切问候,,
majesus您可以使用dplyr执行以下操作,以增量方式对列进行变异。我将目标变量名和公式存储在字符串中。这只是一个简单的例子来说明该方法。我想你的计算要复杂一点
df <- data.frame(p1 = 0:4
,p2 = c(0,1,2,0,0)
,p3 = c(0:3,0)
,p4 = c(0,1,2,0,0)
,v1 = rnorm(5)
,v2 = rnorm(5)
,v3 = rnorm(5)
,v5 = rnorm(5))
library(dplyr)
var <- sapply(2:4,function(x) paste0('p',paste0(1:x, collapse="")))
form <- sapply(2:4,function(x) paste0("p",paste0(1:(x-1),collapse = ""),"*","p",x))
df %>% mutate_(.dots=setNames(form, var))
结果:
p1 p2 p3 p4 v1 v2 v3 v5 p12 p123 p1234
0 0 0 0 0.6901867 0.6365963 0.3526106 -0.8348200 0 0 0
1 1 1 1 0.1530939 0.8553939 1.2160768 3.1494818 1 1 1
2 2 2 2 1.2732477 -0.3102100 1.2538673 0.8904290 4 8 16
3 0 3 0 0.9067448 0.7085275 -1.0328784 0.1979246 0 0 0
4 0 0 0 -0.1388101 0.1275527 1.6018554 0.4335777 0 0 0
能否显示输出样本数据集?我正在试图了解您手术后P12或V12的情况。衷心感谢您的回复。我的任务是联合应用变量Pi和Vi的过程,而不仅仅是Pi。此外,在“功能”模式下对流程进行编程对我来说并不容易。我可以使用“while”或“for loop”吗?答案只是一个例子。事实上,这是一个循环。mutate_u命令按顺序计算向量形式中的每个计算。因此,您需要确保在这个向量中还有v12 v123和v1234的计算。这太棒了!非常感谢你。
p1 p2 p3 p4 v1 v2 v3 v5 p12 p123 p1234
0 0 0 0 0.6901867 0.6365963 0.3526106 -0.8348200 0 0 0
1 1 1 1 0.1530939 0.8553939 1.2160768 3.1494818 1 1 1
2 2 2 2 1.2732477 -0.3102100 1.2538673 0.8904290 4 8 16
3 0 3 0 0.9067448 0.7085275 -1.0328784 0.1979246 0 0 0
4 0 0 0 -0.1388101 0.1275527 1.6018554 0.4335777 0 0 0