Опция заключается в использовании пакета dplyr
. Первая группа данных на Customer.ID
, а затем arrange
на Customer.ID
и Month
. Теперь все, что вам нужно выполнить, - вычесть предыдущее значение из текущего Score
. Так как OP упомянул, что если совпадение не найдено, то в Increase
столбце Increase
должно отображаться то же Score
, поэтому используйте lag
с default=0
.
library(dplyr)
df %>% group_by(Customer.ID) %>%
arrange(Customer.ID, Month) %>%
mutate(NewIncrease = Score - lag(Score, default = 0))
# # A tibble: 8 x 5
# # Groups: Customer.ID [5]
# Customer.ID Month Score Increase NewIncrease
# <chr> <int> <int> <int> <int>
# 1 A123 1 12 12 12
# 2 A123 2 16 4 4
# 3 B561 1 16 16 16
# 4 C985 1 8 8 8
# 5 C985 2 6 - 2 - 2
# 6 D456 1 20 20 20
# 7 D456 2 22 2 2
# 8 Z893 2 15 15 15
Данные:
df <- read.table(text =
"Customer.ID | Month| Score| Increase
A123| 1| 12| 12
B561| 1| 16| 16
C985| 1| 8| 8
D456| 1| 20| 20
A123| 2| 16| 4
Z893| 2| 15| 15
C985| 2| 6| -2
D456| 2| 22| 2",
stringsAsFactors = FALSE, header = TRUE, sep = "|")
Вы должны прочитать, 6.2.2.1. RFC для URI: нормализация регистра , которая гласила:
Когда URI использует компоненты общего синтаксиса, всегда применяются правила эквивалентности синтаксиса компонентов; а именно, что схема и хост не чувствительны к регистру и поэтому должны быть нормализованы в нижний регистр.
blockquote>Получите заглавную форму внутри контроллера.