gpt4 book ai didi

r - 变量创建 - 推断年龄

转载 作者:行者123 更新时间:2023-12-04 08:35:49 24 4
gpt4 key购买 nike

我有一个分组数据框;

Truck <- c('A','A','A','A','B','B','B','B','C','C','C','C')
OilChanged <- c('True','NewOil','False','False','False','False','False','False','True','NewOil','True','NewOil')
Odometer <- c(1000, 1000, 2000,3000,700,800,900,1000,20000,20000,30000,30000)
DF <- data.frame(Truck, OilChanged, Odometer)

# Truck OilChanged Odometer
# 1 A True 1000
# 2 A NewOil 1000
# 3 A False 2000
# 4 A False 3000
# 5 B False 700
# 6 B False 800
# 7 B False 900
# 8 B False 1000
# 9 C True 20000
# 10 C NewOil 20000
# 11 C True 30000
# 12 C NewOil 30000
我试图在可能的情况下推断油的年龄(以公里为单位)。只有在发生换油后才能进行推断。如果不更换机油,机油的年龄将仍然是个谜(例如:卡车 B)。
下面是想要的结果;
Truck <- c('A','A','A','A','B','B','B','B','C','C','C','C')
OilChanged <- c('True','NewOil','False','False','False','False','False','False','True','NewOil','True','NewOil')
Odometer <- c(1000, 1000, 2000, 3000,700,800,900,1000,20000,20000,30000,30000)
OilAge <- c(NA,0,1000,2000,NA,NA,NA,NA,NA,0,10000,0)
Result <- data.frame(Truck, OilChanged, Odometer, OilAge)


# Truck OilChanged Odometer OilAge
# 1 A True 1000 NA
# 2 A NewOil 1000 0
# 3 A False 2000 1000
# 4 A False 3000 2000
# 5 B False 700 NA
# 6 B False 800 NA
# 7 B False 900 NA
# 8 B False 1000 NA
# 9 C True 20000 NA
# 10 C NewOil 20000 0
# 11 C True 30000 10000
# 12 C NewOil 30000 0
注意:里程表读数介于 之间真换油行,它跟随 新油行将始终相同。因为油样是在换油前直接采集的。但必须维护两行,以便下游计算正常运行,例如变化率公式。
OilAge 列中的 NA 表示年龄是个谜。

最佳答案

请让我知道此解决方案是否适合您。

Truck <- c('A','A','A','A','B','B','B','B','C','C','C','C')
OilChanged <- c('True','NewOil','False','False','False','False','False','False','True','NewOil','True','NewOil')
Odometer <- c(1000, 1000, 2000,3000,700,800,900,1000,20000,20000,30000,30000)
DF <- data.frame(Truck, OilChanged, Odometer)

DF %>%
group_by(Truck) %>%
mutate(status = length(unique(OilChanged)),
OilAge = ifelse(OilChanged == "NewOil", 0,
ifelse(OilChanged == "False", Odometer - (Odometer - lag(Odometer)),
ifelse(OilChanged == "True", Odometer - lag(Odometer), NA)))) %>%
mutate(OilAge = ifelse(status !=1, OilAge, NA)) %>%
subset(select = c(Truck, OilChanged, Odometer, OilAge))

关于r - 变量创建 - 推断年龄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64807645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com