有一个准长格式的df:
df <- data.frame(X= c(1,2,1,2,1,2,1,2),
Y= c(1,2,1,2,1,2,1,2),
variable = c("A","A","B","B","A","A","B","B"),
value = c(.5,.6,1000,1000,.7,.8,2000,2000))
目标是,对于每个唯一的X,Y配对(有2个),1.)用变量A(其相关值)作为响应变量,用变量B作为预测变量(其相关值)执行lm,然后2.)确定(如果可能的话绑定)生成响应值0的预测变量值。
我已经将变量列转换为factor,然后尝试pivot_wider,pivot_longer,dcast等。显然没有用,因为变量有重复的名称(如果转换为因子,则为因子水平)。在没有进一步旋转的情况下,很可能可以运行lm并确定0点,然后将其绑定到每个唯一X,Y配对的原始df。
这是要填充最后一列的所需输出的示例:
desired <- data.frame(X= c(1,2),
Y= c(1,2),
pred_value_B_when_response_A_equals_0 = c(NA,NA))
根据要求,这是原始的宽格式
df_wide <- data.frame(X=c(1,2),
Y=c(1,2),
A=c(.5,.6),
B=c(1000,1000),
A1=c(.7,.8),
B1=c(2000,2000))
然后我表演了
df <- reshape2::melt(df_wide,
id.vars = c("X","Y"))
2条答案
按热度按时间qnakjoqk1#
使用宽数据,将其更改为如下所示:
现在在上面的数据中,你可以很容易地按X和Y分组,并运行A对B的线性模型:
现在,您可以使用每组拟合的线性模型进行预测等
r7xajy2e2#
解决了这个问题。