Мои извинения за плохо сформулированный вопрос. Я новичок в R и в программировании и для публикации вопросов.
Я работаю с данными панели. У меня есть две переменные, зависящие от контекста: cat (категория от 1 до 4, где человек играл в 3 из 4 возможных мест) и d.stake = сумма денег, поставленная в данной категории. Cat и d.stake вложены в индивида (id) (контекстно-независимая переменная).
I w * sh, чтобы получить разницу между количеством разных категорий в разных категориях.
Я создал четыре переменные. Два из них запаздывают - это переменная запаздывания (ldstake и ldstake2) и две переменные с оценками разности (diff1 = кол - ldstake; diff2 кол - ldstake2) с использованием кода
df.3$ldstake <- c(NA, df.3$d.stake[-nrow(df.3)])
df.3$ldstake[which(!duplicated(df.3$id))] <- NA
df.3$ldstake2 <- c(NA, df.3$ldstake[-nrow(df.3)])
df.3$ldstake2[which(!duplicated(df.3$id))] <- NA
df.3 <- df.3 %>%
mutate(diff1 = d.stake - ldstake,
diff2 = d.stake - ldstake2)
Это дает мне следующий кадр данных :
id cat d.stake ldstake ldstake2 diff1 diff2
1 1 50 NA NA NA NA
1 2 60 50 NA 10 NA
1 3 55 60 50 -5 5
2 1 34 NA NA NA NA
2 2 74 34 NA 40 NA
2 4 12 74 34 -62 22
Тем не менее, я буду sh, чтобы заменить первый ряд diff1 (NA) для каждого человека на третий ряд diff2 от каждого человека (см. Пример ниже).
id cat d.stake ldstake ldstake2 diff1 diff2
1 1 50 NA NA !5! NA
1 2 60 50 NA 10 NA
1 3 55 60 50 -5 !5!
2 1 34 NA NA *22* NA
2 2 74 34 NA 40 NA
2 4 12 74 34 -62 *22*
Возможно ли это? Я был бы признателен за получение сценария, в котором я могу заменить первое значение NA на значение diff2 и последнее значение для человека (третье или последнее наблюдение). Кроме того, если есть сценарий, который сделает это автоматически (то есть создаст разницу между cat2-1, cat3-2 и cat3-1), я был бы благодарен за любую помощь.
Всего наилучшего, Tony