2016-09-14 2 views
1

이것은 매우 초보적인 질문이라고 생각하지만 웹 검색 (및 SO)을 통해 많은 솔루션을 시도해 보았지만 대답을 찾을 수 없었습니다. 나는 많은 열이있는 CSV 데이터 세트를목록으로 분할 한 후 데이터에 액세스

예를 들어, : 여기에 문제입니다 yearID XY Z를 내가 사용이 읽기 : data$A<-(X+Y)/Z

: data<-read.csv("/foo/bar.csv")이 거기에서, 나는 XY 및 Z는 각 행에 대한을 계산하는 데 사용

이제 매년 평균 A를 플로팅하고 싶습니다. 따라서 list_df <- split(data, data$yearID)입니다. 만세, 내가 요약하면 (list_df [5]) 나는 다섯 번째 해에 대한 X Y Z와 A의 요약을 볼 수있다. 나는, 나는 다음과 같은 일을 할 붙어하려고 해요 곳에있다

은 다음과 같습니다

for(year in list_df){ 
xy<-data.frame(mean(year$yearID, na.rm=T), mean(year$A, na.rm=T)) 
} 

이 루프 (이것은 오류가 발생하지 않습니다)하지만, XY는 그냥에서 무슨 일이 나온다 "작동" 작년과 그 해의 평균 A입니다. 이상적으로, 나는 결국 "Avg A vs YearID"를 그려보고 싶다. 나는 찾은 다른 코드 예제를 기반으로 for 루프에 많은 수의 순열을 시도했지만 아직 아무도 작동하는 솔루션을 제공하지 못했습니다. 난 그냥 R.

를 배우기 시작했습니다 같은 제안이 목록은 다른 이유로 밖으로 분할이 필요하지 않는 한

건배, 자크가

+0

이 작업은'aggregate'를 사용하여 직접 수행 할 수 있습니다. 'plot (aggregate (hp ~ cyl, mtcars, mean), col = "blue", pch = 19, cex = 2.5)' – ddunn801

+0

게시물에 데이터 세트의 재현 가능한 예제를 포함시킬 수 있다면 가능성이 더 많고 더 나은 답변을 얻을 수 있습니다. –

답변

1

, 당신은 aggregate을 사용할 수 있습니다,이 과정의 어떤 부분에 가장 환영합니다 :

data <- data.frame(yearId=rep(2010:2014,each=2),X=runif(10,1,100),Y=runif(10,50,150),Z=runif(10,100,200)) 
data$A <- (data$X+data$Y)/data$Z 

data2 <- aggregate(A~yearId,data,mean) 
plot(data2$yearId,data2$A) 
+0

안녕하세요 @ ddunn801. 많은 고마움, 골재는 내가 원하는 것을해야한다. 2 차적인 질문으로, 첫 번째 라인이 무엇을하고 있는지 설명 할 수 있습니까? data.frame 메서드에 rep 또는 runif 추가를 이해하지 못합니다. 해당 명령을 붙여 넣은 다음 명령이 제대로 작동하는지 확인할 수 있지만 방법론도 이해하고 싶습니다. – Zach

+0

자신의 프로젝트에 필요하지 않습니다. 샘플 데이터 세트를 제공하지 않았기 때문에 설명 된 것과 동일한 레이아웃으로 빠르게 작성했습니다. 그것이하는 일은 난수로 세포를 채우는 것입니다. 당신은 그것을 무시할 수 있습니다. – ddunn801

관련 문제