【发布时间】:2019-06-05 02:40:50
【问题描述】:
我有两个数据框 df1 和 df2,我想按 df1$delivery 分组并创建 df2 的子集,其中一列 df2$destination 等于 df1$facility 列,另一个 df2$source 列不等于相同的 df1$facility 和对 df2$distance 列求和
df1
facility delivery vol
ludhiana abohar 123
delhi abohar 234
mumbai abohar 345
delhi Adampu 739
jaipur Adampu 21757
lucknow Adampu 37449
df2
source destination dist
delhi ludhiana 10
mumbai ludhiana 5
ludhiana delhi 10
mumbai delhi 5
ludhiana mumbai 5
delhi mumbai 5
delhi jaipur 5
jaipur delhi 5
delhi lucknow 10
lucknow delhi 10
jaipur lucknow 5
lucknow jaipur 5
预期输出
facility delivery vol pan_india_dist
ludhiana abohar 123 10
delhi abohar 234 15
mumbai abohar 345 10
delhi Adampu 739 15
jaipur Adampu 21757 10
lucknow Adampu 37449 15
x <- sapply(data4$facility,function(i)sum((mh_mh$destination[data4$facility %in% i]) & (mh_mh$source[!data4$facility %in% i]))
我试过这个公式,但它抛出了没有意义的因素错误
【问题讨论】:
-
您能解释一下如何获得第一行的值 10 吗?
-
你能用
dput或reprex做一个可重现的例子吗?这将使人们更容易帮助您解决问题。 stackoverflow.com/questions/5963269/… -
对不起第一行是15,第一行达到15的逻辑如下,对于df1中的每个设施名称,例如:ludhiana,filter df2$destination = ludhiana and df2 $source != ludhiana,并添加 df2$dist 列中的所有值,groupby df1$delivery
标签: r dplyr sum conditional-statements