값이 다른 열의 이전 행에 따라 달라지는 새 변수를 생성 중입니다. 따라서 데이터의 순서가 중요합니다. 내 데이터가 현재 보이는 모습입니다.다른 열의 이전 관측 값을 기반으로 새 변수 만들기
ID Cong Comm Y
1 52 3 0
1 53 3 0
1 54 3 1
1 53 4 1
2 50 2 1
2 50 7 1
3 48 4 1
4 48 3 1
4 48 7 0
4 49 7 1
Y2라는 새 변수를 만들고 싶습니다. 관측치의 Y = 0이면 동일한 관측치의 Y2는 1이되어야합니다. 다음 행의 Y = 0 인 경우 이전 Y2 값에 1을 더합니다 (이 관측치의 Y2 값은 2와 같아야 함). Y = 1, 1을 추가 할 때까지이 프로세스를 계속 한 다음 프로세스를 중지하십시오. 기본적으로 새 변수는 다른 열의 값이 "1"이 될 때까지 카운트하고 프로세스를 반복합니다.
ID Cong Comm Y Y2
1 52 3 0 1
1 53 3 0 2
1 54 3 1 3
1 53 4 1 1
2 50 2 1 1
2 50 7 1 1
3 48 4 1 1
4 48 3 1 1
4 48 7 0 1
4 49 7 1 2
가 여기 내 샘플 dataframe입니다 :
이것은 어떻게 보일지입니다.
data.frame(
ID = c(1L, 1L, 1L, 1L, 2L, 2L, 3L, 4L, 4L, 4L),
Cong = c(52L, 53L, 54L, 53L, 50L, 50L, 48L, 48L, 48L, 49L),
Comm = c(3L, 3L, 3L, 4L, 2L, 7L, 4L, 3L, 7L, 7L),
Y=c(0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L))
루프 또는 if-else 명령이이 문제를 해결하는 가장 좋은 방법입니까? if-else 문을 시도했지만 코드가 작동하지 않았습니다. 모든 권장 사항은 훌륭합니다.