>

모든 그룹이 같은 양의 데이터 포인트를 갖도록 데이터 프레임의 값을 그룹별로 보간하고 싶습니다.

지금까지 expand () 및 na.approx () 함수 주위에 몇 가지 시도를했지만 성공하지 못했습니다.

예제로 이해하는 것이 가장 쉽습니다 :이 데이터 프레임을 변환하고 싶습니다 :

> df.test
  ID  x   y
1  A  0 9.0
2  A  2 8.0
3  B 10 1.0
4  B 15 1.5
5  B 30 3.0

이것에

> df.result
   ID    x    y
1   A  0.0 9.00
2   A  0.5 8.75
3   A  1.0 8.50
4   A  1.5 8.25
5   A  2.0 8.00
6   B 10.0 1.00
7   B 15.0 1.50
8   B 20.0 2.00
9   B 25.0 2.50
10  B 30.0 3.00

이 아이디어는 누락 된 y 값이 선형 보간에 의해 결정되는 그룹 A와 B 각각에 5 개의 데이터 포인트를 만드는 것입니다. 그룹 "A"의 경우 x = 0과 x = 2 사이의 간격이 동일한 샘플을 생성하고 인접한 (x, y) 데이터 포인트에서 해당 y 값을 선형 보간해야합니다.

시작하기 위해 그룹을 확장했습니다 (y 열에 NA를 수신하여 나중에 보간하도록).

 df.test.expand <- df.test %>%
                      group_by(ID) %>%
                      expand(x=full_seq(x,1)) %>% 
                      ungroup() %>% 
                      left_join(df.test)

그러나 x 열은 항상 1 씩 증가하며 각 그룹에 대해 동일한 샘플 크기 (예 : 5 요소)를 얻지 못합니다.

이 보간을 수행하는 더 직접적인 방법이 있습니까?

dplyr에서 간단해야하는 일반적인 문제라고 생각합니다.

도움을 주셔서 감사합니다!

  • 이전 sql server - sqlcmd 오류, 메시지 102, 수준 15, 상태 1, 줄 1 'd'근처에 잘못된 구문
  • 다음 android - 사용자에게 ArrayList 표시