如何基于其他行中的值填充R数据框中的行中的值
考虑一个R数据帧,如下所示如何基于其他行中的值填充R数据框中的行中的值,r,R,考虑一个R数据帧,如下所示 Month Parent Child Parent_amt Child_amt 1 p1 c1 30 10 1 p1 c2 30 20 1 p2 c1 40 15 1 p2 c2 40 25 2 p1 c1 60 10
Month Parent Child Parent_amt Child_amt
1 p1 c1 30 10
1 p1 c2 30 20
1 p2 c1 40 15
1 p2 c2 40 25
2 p1 c1 60 10
2 p1 c2 60 50
2 p2 c1 20 15
2 p2 c2 20 5
3 p1 c1 25 (10+10)/(30+60)*25
3 p1 c2 25 (20+50)/(30+60)*25
给定最后两行p1的父项金额25,我想计算c1的子项金额为25的比例,等于c1的子项金额之和与最后两行以上所有行p1的父项金额之和的比率。我想为c2做类似的事情。我该怎么做?我真的想不出在R有什么办法。有人能帮忙吗?我不太了解你的数据结构。我不确定它是否应该这样组织。我已成功使用dplyr生成了您想要的结果:
library(tibble)
library(dplyr)
df <- tibble::tribble(
~Month, ~Parent, ~Child, ~Parent_amt, ~Child_amt,
1, "p1", "c1", 30, 10,
1, "p1", "c2", 30, 20,
1, "p2", "c1", 40, 15,
1, "p2", "c2", 40, 25,
2, "p1", "c1", 60, 10,
2, "p1", "c2", 60, 50,
2, "p2", "c1", 20, 15,
2, "p2", "c2", 20, 5,
)
new_df <- df %>%
dplyr::bind_rows({
df %>%
dplyr::group_by(Parent, Child) %>%
dplyr::summarise(
Child_amt = sum(Child_amt) / sum(Parent_amt)
) %>%
dplyr::mutate(Month = 3, Parent_amt = 25, Child_amt = Child_amt * 25)
})
new_df
库(TIBLE)
图书馆(dplyr)
df%
dplyr::分组依据(父、子)%>%
dplyr::总结(
子金额=总和(子金额)/总和(父金额)
) %>%
dplyr::mutate(月=3,父项金额=25,子项金额=子项金额*25)
})
新德里
我假设父项金额预设为25,并且我们根据您所述的父项金额和子项金额的先前组合生成子项金额谢谢。这是行不通的。我已经给出了期望值的表达式。您的代码没有生成这些值。我现在已经更新了它。因此,您可以看到我从以前的值中导出新的Child_amt值的步骤。。。然后,mutate函数添加新的月份,将父项金额设置为25,然后将子项金额缩放25。。。这是正确答案吗?