2014-07-10 3 views
0

"depth", "value"및 "year"를 포함하는 데이터 세트가 있습니다. 각 연도의 가치 수는 동일하지 않으며 연중 깊이는 연속입니다.에서 R. 변수를 3 개의 길이로 나눕니다. 다른 변수의 평균과 중간 값을 길이로 나눕니다.

depth value year 
    0.130988 19.8414 2009 
    0.146459 2.98164 2009 
    0.161929 1.70823 2009 
    0.177399 1.26972 2009 
    0.192869 1.97404 2009 
    1.24153 25.1569 2008 
    1.28236 46.9919 2008 
    1.32216 7.34275 2008 
    1.56513 3.25933 2008 
    1.61322 2.69906 2008 
    1.65984 14.7255 2008 
    3.1255 6.39838 2007 

나는 세 개의 동일한 길이로 각 "년"의 총 "깊이"를 분할하고 세 가지 길이, "중간", "값"의 "표준 편차"를 "의미"얻을 필요가있다. 나는 값을 보간하고 아래의 3 가지 깊이 점에서 3 가지 값을 얻는데 성공했다. 그러나 하나의 깊이 지점에 대해 하나의 값을 얻고 싶지는 않지만 하나의 깊이 범위에 대한 요약을 얻고 싶습니다. 예를 들어, 내 말은, 중간, 일년의 길이 1, 길이 2 및 길이 3, 나는 세 가지 길이로 연간 총 깊이를 분할 (길이 1, 길이 2 및 길이 3)

yr2009<-subset(data, year==2009) 
    yr2009<-approx(yr2009$depth, yr2009$value, rule=1,method='linear', xout=seq(min(yr2009$depth), max(yr2009$depth),length.out=3)) # getting data. no need f function 

I의 표준 편차를 얻으려면 또한 3 년의 길이를 얻으려고 시도했지만 작동하지 않습니다. < - seq (from = min (yr2009 $ depth), to = max (yr2009 $ depth), length.out = 3)

도움 주셔서 대단히 감사합니다 !!!!!

+0

는 당신이 2007 수행 할 작업 준다? 당신은 정말로 그것을위한 세 가지 그룹을 얻을 수 없습니다. – MrFlick

+0

이것은 내 데이터 세트의 일부입니다. 실제로 1 년 동안 10 개 이상의 데이터 포인트가 있습니다. 내 데이터의 연도는 2009 년에서 1998 년까지이며 여기에 표시된 데이터는 여름 데이터의 일부입니다. 그래서 나는 겨울 데이터도 가지고있다. 그러나이 데이터 집합을 처리하는 방법을 알고 있다면 모든 데이터 집합을 적용 할 수 있습니다. 내 게시물을보고 주셔서 감사합니다! :) – user2928318

+0

샘플 데이터 세트에는 최소/최대를 기준으로 3 개의 섹션으로 균등하게 분할하는 경우 중간 섹션에는 관찰이 없습니다. 당신은 또한 그것이 데이터의 단점이라고 생각합니까, 아니면 특별한 것을하고 싶습니까? – MrFlick

답변

1

하나의 전략이 있습니다. 이 문제가 발생했기 때문에 나는 sampel 데이터가

dd <- structure(list(depth = c(0.130988, 0.146459, 0.161929, 0.177399, 
0.192869, 1.24153, 1.28236, 1.32216, 1.56513, 1.61322, 1.65984 
), value = c(19.8414, 2.98164, 1.70823, 1.26972, 1.97404, 25.1569, 
46.9919, 7.34275, 3.25933, 2.69906, 14.7255), year = c(2009L, 
2009L, 2009L, 2009L, 2009L, 2008L, 2008L, 2008L, 2008L, 2008L, 
2008L)), .Names = c("depth", "value", "year"), row.names = c(NA, 
11L), class = "data.frame") 

지금 나는 심지어 그런 다음 우리가 깊이 값을 분할

evenbreaks<-function(x, n=3) { 
    seq(min(x), max(x), length.out=n+1) 
} 
evencuts<-function(x, n=3) { 
    cut(x, evenbreaks(x, n), include.lowest=T, labels=F) 
} 

을 깨는에 사용할 헬퍼 함수를 ​​정의하므로, 2007 개 값을 꺼내서 매년 최대 이제 우리는 우리가

,536,913,632 원하는 통계를 정의하는 1, 2 또는 3

yeargroup<-with(dd, ave(depth, year, FUN=evencuts)) 

의 그룹을 얻을 수 있습니다 10

stats<-function(x) { 
    c(mean=mean(x), median=median(x), sd=sd(x)) 
} 

그리고 데이터

를 요약하기 위해이 기능을 사용
aggregate(value~yeargroup+year, dd, stats) 

이것은 단지 하나 개의 관찰을 가지고 그

yeargroup year value.mean value.median value.sd 
1   1 2008 26.4971833 25.1569000 19.8585257 
2   3 2008 6.8946300 3.2593300 6.7875157 
3   1 2009 11.4115200 11.4115200 11.9216506 
4   2 2009 1.7082300 1.7082300   NA 
5   3 2009 1.6218800 1.6218800 0.4980294 
+0

오, 멋지 네요 !!! 도와 주셔서 정말로 고맙습니다!! 나는 너에게서 많은 것을 배웠다 !! :) – user2928318

관련 문제