Я ищу помощь для построения логики в R. У меня есть набор данных, как показано на рисунке
Для любых данных Pack
и ID
:
- для первого вхождения,
cost=Rates
- для второго вхождения,
cost = Rates[Current]- Rates[Previous]
- Для третьего случая,
cost = Rates[Current]- Rates[Previous]
Я попробовал приведенный ниже фрагмент кода, но столбец Стоимость остался без изменений.
df_temp <- structure(list(Rates = c(100L, 200L, 300L, 400L, 500L, 600L),
ID = structure(c(2L, 2L, 2L, 1L, 3L, 3L), .Label = c("wwww",
"xxxx", "yyyy"), class = "factor"), Pack = structure(c(1L,
1L, 2L, 1L, 2L, 2L), .Label = c("a", "b"), class = "factor"),
Cost = c(100L, 100L, 300L, 400L, 500L, 100L)), class = "data.frame", row.names = c(NA,
-6L))
calculate_TTF_or_S <- function(dput(df)){
df <- arrange(df,ID,Rates)
unique_sysids <- unique(df$ID)
for (id in unique_sysids) {
df_sub <- df[which(df$ID == id),]
j=1
for (i in seq_len(nrow(df_sub))){
if (j==1){
df$Cost[i] <- df_sub$Rates[j]
} else {
df$Cost[i] <- df_sub$Rates[j] - df_sub$Rates[j-1]
}
j <- j+1
}
}
return (df$Cost)
}
df_temp$Cost <- calculate_TTF_or_S(df_temp)