我下面有一个数据框,它是有关公司支出的。有没有一种方法可以获取特定日期在特定日期的费用明细。下面让我详细解释(也许这是最难解决的问题之一)
location of ruby executable in foo.rb: /Users/richiethomas/.rbenv/versions/2.5.1/bin/ruby
2.5.1
-----
location of ruby executable inside bar.rb: /Users/richiethomas/.rbenv/versions/2.5.1/bin/ruby
2.5.1
在每个位置(L1,L2和L3)都有2个日期(5月13日和5月14日)。好。我需要在L1位置以最低的实验室费用(即14,因为在5月13日和5月14日之间的最低费用是14)来确定电子充电和马赫充电。同样,我需要在位置L1处至少收取Elec Charge(即19)的Lab费用和Mach Charge。因此,对于每个位置,我都需要此详细信息。我们可以解决这个问题吗?看起来很复杂
答案 0 :(得分:1)
好,重述您的问题。 对于每个位置: 在实验室费用最低的那一天,电费和马赫费是多少? 在电子费用最低的那一天,实验室和马赫数是多少?
首先,R不喜欢带有空格的名称,因此我将其重命名。
library(tidyverse)
df <- df %>%
rename(LabCharge = `Lab Charge`,
ElecCharge = `Elec Charge`,
MachCharge = `Mach Charge`)
然后,我们将在每天的最低费用上添加一个标志。
df <- df %>%
group_by(Location) %>%
mutate(min_lab = LabCharge == min(LabCharge, na.rm = TRUE),
min_elec = ElecCharge == min(ElecCharge, na.rm = TRUE))
最后,我们要限制为这些最小行。 min_lab
和min_elec
变量是booleans
,为true或false。通过对变量进行过滤,我们仅看到变量为TRUE
的那些行,即仅看到指定费用最小的实验室记录。
df %>% filter(min_lab)
df %>% filter(min_elec)
您将在此解决方案中看到位置2具有两天相同的电荷,因此它们都标记为最小值,并且都已报告。
答案 1 :(得分:0)
似乎我们需要一个let fib (n:int) :int =
let rec loop (i:int) (a:int) (b:int) :int =
if i = n then a
else loop (i+1) (b) (a+b) in
loop 0 0 1;;
分组的人
mutate_at