Вчера я спросил, как суммировать столбец на основе условия в другом data.frame
. Это был успех в небольших подмножествах. Однако при использовании полных данных потребовались часы. Поэтому я подумал, почему бы просто не выполнить соединение с функцией plyr
rbind.fill
, а затем вычислить условную сумму. Тогда я понял, что не знаю как, поэтому я надеялся, что вы можете мне помочь. Это голова.
a b c d
1 1010001 4507888.889 NA NA
2 1010011 843166.708 NA NA
3 1010021 612500.000 NA NA
4 1010031 740000.000 NA NA
5 1010041 4166.667 NA NA
6 1010051 3366666.667 NA NA
Это хвост.
a b c d
689085 NA NA 70.62 181.1278
689086 NA NA 106.30 2383.3616
689087 NA NA 768.80 248804.5507
689088 NA NA 512.30 189899.9227
689089 NA NA 144.70 176382.4634
689090 NA NA 340.90 264691.8022
То, что я пытаюсь сделать, это взять каждое значение b
и сравнить его со всеми значениями d
и затем суммируйте все значения в c
, которые удовлетворяют условию b(just one value)>=f(all values)
. Я пробовал с этим.
df<-df%>%mutate(sumc=sum(df$g[b>=df$f]))
Это приводит меня к столбцу sumc
, заполненному 0
. Головой и хвостом я показываю результат, который должен выглядеть примерно так.
a b c d e
1 1010001 4507888.889 NA NA 1943.72
2 1010011 843166.708 NA NA 1943.72
3 1010021 612500.000 NA NA 1943.72
4 1010031 740000.000 NA NA 1943.72
5 1010041 4166.667 NA NA 177.92
6 1010051 3366666.667 NA NA 1943.72
689085 NA NA 70.62 181.1278 NA
689086 NA NA 106.30 2383.3616 NA
689087 NA NA 768.80 248804.5507 NA
689088 NA NA 512.30 189899.9227 NA
689089 NA NA 144.70 176382.4634 NA
689090 NA NA 340.90 264691.8022 NA
Кроме того, я пытался использовать group_by(a)
, чтобы иметь только те значения, для которых sumc
принимает значение, но это не работает.
Спасибо всем, кто это читает! :)