2016-12-08 16 views
0

"Day", "Tree", "Trt"및 "LogColumn"열이있는 데이터 세트 ('갈라'라는 이름)가 있습니다. 데이터는 시간이 지남에 따라 수집되었으므로 각 번호가 매겨진 트리는 각 트리 트마다 동일한 트리입니다. 트리 번호는 각 처리마다 반복됩니다 (예 : 여러 트리밍의 경우 "1"트리가 있음).R에서는 여러 데이터 열로 그룹화 된 데이터 하위 집합의 평균 및 표준 오류를 계산하고이를 새로운 데이터 프레임으로 어떻게 출력합니까?

각 트리마다 매일 'LogColumn'열에 대한 평균 및 표준 오차를 계산하고 싶습니다 (예 : 하루 평균, 트리 하나, 트리트먼트 x, 등)를 생성하고 평균 및 표준 오류 결과를 원래 날짜, 트리, Trt 값을 포함하는 새로운 데이터 프레임으로 출력합니다.

다른 스택 오버플로 코드에서 Frankenstein 코드를 만들려고했지만 실패했습니다. 그러나 모든 구성 요소를 한 번에 찾을 수는 없습니다. 내가 이것을 놓친 경우, 죄송합니다.이 답변에 대한 링크를 알려주십시오. 나는 코딩에 익숙하지 않고 R을 사용하고 있으며, 내가하고 싶은 것과 직접적으로 관련이없는 다른 코드가 어떻게 적용될 수 있는지 잘 이해하지 못한다. 이 시점에서

, 나는 (" '폐쇄'subsettable없는 유형의 객체"나는 또한 현재 오류 메시지가 무엇입니까)이있다, 그러나 그것은 어디에서든지 정확한 근처에 있는지 알고하지 않습니다 TreeAverages <- data.table[, MeanLog=mean(gala$LogColumn), se=std.error(gala$LogColumn), by=c("Day","Tree","Trt")]

어떤 도움이라도 대단히 감사합니다. 고맙습니다!

+3

당신은 재현 예를 http://stackoverflow.com/questions/5963269/how-to-make-a을 제공해야한다 -great-r-reproducible-example – aelwan

답변

4

data.table을 사용하는 경우 갈라를 먼저 data.table 객체로 변환해야합니다.

gala = data.table(gala) 

gala_output = gala[, .("MeanLog" = mean(LogColumn), 
     "std" = std.error(LogColumn)), 
    by = c("Day", "Tree", "Trt")] 

정말 가까이에 있었지만 data.table은 dplyr처럼 작동하므로 변수 이름을 이미 알고 있습니다. 처음부터 끝까지 $ LogColumn을 지정할 필요가 없습니다.

.()는 list()의 줄임말이므로, mean.txt 열에 Day, Tree 및 Trt로 그룹화 된 MeanLog 및 std 열을 반환하도록 지정했습니다. 기본 R aggregate를 사용

library(dplyr) 
df <- gala %>% 
    group_by(Day, Tree, Trt) %>% 
    summarise(mean = mean(LogColumn), 
      std = sd(LogColumn)) 
1

:

aggregate(LogColumn ~ Day + Tree + Trt, data = gala, 
      FUN = function(x) c(mean = mean(x), se = std.error(x)))