좀 더 일반적인 문제의 특정 변형이 생겼습니다. 내가 data.table과 함께 사용하고있는 패널 데이터가 있고 data.table의 기능별 그룹을 사용하여 누락 된 값을 채우고 싶습니다. 불행히도 그들은 숫자가 아니므로 단순히 보간 할 수는 없지만 조건에 따라 채워 져야합니다. data.tables에 일종의 조건부 na.locf를 수행 할 수 있습니까?조건부 NA로 채우기 data.table
본질적으로 NAs 후에 조건부로 NAs를 채우는 방법이 있지만 다음 관찰이 이전 것 인 경우에만 NAs를 채우기를 원합니다.
예를 들어, 다음 데이터에서 각 id 그룹에 의해 associatedid 변수를 채우고 싶습니다. 그래서 id == 1, year == 2003은 ABC123으로 채울 것입니다. 왜냐하면 NA 앞뒤의 값이 같기 때문입니다. 그러나 동일한 ID의 경우 2000이 아니기 때문입니다. Id == 2는 다음 값이 NA 이전의 값과 같지 않기 때문에 변경되지 않습니다. Id == 3은 2003 년과 2004 년을 채울 것입니다.
df = read.table(header=T, text = "id year associatedid
1 2000 NA
1 2001 ABC123
1 2002 ABC123
1 2003 NA
1 2004 ABC123
1 2005 ABC123
2 2000 NA
2 2001 ABC123
2 2002 ABC123
2 2003 NA
2 2004 DEF456
2 2005 DEF456
3 2000 NA
3 2001 ABC123
3 2002 ABC123
3 2003 NA
3 2004 NA
3 2005 ABC123
")
dt = data.table(df,key = c("id"))
모든 제안이나 조언을 부탁드립니다. 감사!
게시 한 경우에는 분명히 마찬가지입니다. 제안한대로 더 큰 데이터 세트에 적용하려고하면 NAs가 행을 채울 때 중단된다는 것을 알게되었으므로이 경우를 처리하기 위해 마지막 조건을 추가했습니다. – DaedalusBloom