나는 Year와 CountyID로 데이터를 그룹화하려고하는데, 서브 세트 데이터에 splinefun (cubic spline interpolation)을 사용하려고합니다. 나는 아이디어에 개방적이지만, 스플라인 펀은 필수이며 변경할 수 없습니다. 17 CountyIDs 미국의 모든 군에 동일 : Agegrp = 1, 2013 :R - group_by splinefun 활용
여기age <- seq(from = 0, by = 5, length.out = 18)
TOT_POP <- df %.%
group_by(unique(df$Year), unique(df$CountyID) %.%
splinefun(age, c(0, cumsum(df$TOT_POP)), method = "hyman")
내 데이터 년도의 샘플 = 2010입니다 : 여기
내가 사용하려고하고있는 코드입니다.CountyID Year Agegrp TOT_POP
1001 2010 1 3586
1001 2010 2 3952
1001 2010 3 4282
1001 2010 4 4136
1001 2010 5 3154
은 내가이 Agegrp 1 복용하고있는 중이 야 : 17 개인 년에 0 그룹화를 분할 - 지금 각 그룹을 84 것은 오년의 표현이다. splinefun을 사용하면이 작업을 수행 할 수 있으며 프로세스의 수학적 정확성 수준을 제공 할 수 있습니다. 즉, splinefun을 사용하면 미국의 각 개별 카운티에서 각 나이의 인구 합계를 제공 할 수 있습니다.
마지막으로, 그 자체로 splinefun 코드 작업을 수행하지만 GROUP_BY 기능 내에서, 그것은 생산하지 않습니다 : 나는 그것을 사용하고있는 방법이
TOT_POP <- splinefun(age, c(0, cumsum(df$TOT_POP)),
method = "hyman")
TOT_POP = pmax(0, diff(TOT_POP(c(0:85))))
처럼 작동
Error: wrong result size(4), expected 68 or 1.
splinefun 코드
1 년 동안 하나의 카운티 ID에서 테스트 한 것입니다. "x"년 동안이 프로세스를 반복해야하고 약 3200 개의 카운티가 필요합니다.
내가 바로 잡아 보자. 두 변수에 따라 데이터 프레임을 분할하려고합니다. 그런 다음 더 작은 데이터 프레임 각각에 대해'splinefun'을 사용하여'age'를'TOT_POP'에 매핑하는 스플라인 함수를 얻고 싶습니까? 그런 다음 원래의 데이터에는 5, 10, 15, 20 세의 인구 만 있기 때문에이 함수를 사용하여 0에서 85 사이의 모든 연령대에서 전체 인구를 보간하고 싶습니다. 아마도'split'과'lapply' 또는'plyr'로 이것을 구현할 수 있고, 뭔가 효과가있다면 누군가가'dplyr'를 가지고 당신을 도울 준비가 잘되어있을 것입니다. – kdauria
splinefun은 Agegrp가 1 : 17이고 한 번에 한 카운티에 대해 1 년 동안 사용되는 데이터의 하위 집합에서 사용됩니다. 마지막 연령 그룹은 0 : 84 개인 년입니다. –
저는 아직도 혼란 스럽습니다. 아마도'df' 데이터 프레임을 변경할 수 있을까요? 'Agegrp'를 연관된'age'로 대체하십시오. 예를 들어,'df $ Agegrp = df $ Agegrp * 5'. 'colnames (df) [3] = "age"'. 이렇게하면 질문이 간단해질 수 있습니다. – kdauria