Tôi muốn sử dụng ddply để tóm tắt dữ liệu từ nhiều biến, theo nhiều yếu tố.R ddply looping; nhiều yếu tố
Tôi có dữ liệu thử nghiệm sau đây:
site block plot rep name weight height dtf
Alberta 1 2 1 A 43 139 54
Alberta 2 5 2 A 46 139 46
Alberta 4 10 3 A 49 136 54
Nunavut 1 1 1 A 49 136 59
Nunavut 2 4 2 A 51 135 50
Nunavut 3 8 3 A 52 133 56
Alberta 5 13 1 B 55 132 50
Alberta 4 12 2 B 55 125 46
Alberta 5 15 3 B 56 120 46
Nunavut 5 14 1 B 57 119 54
Nunavut 5 13 2 B 58 119 55
Nunavut 4 11 3 B 59 118 51
...
và vân vân.
Tôi muốn lấy các biến "trọng lượng", "chiều cao", "dtf" và tóm tắt các biến đó theo các yếu tố "trang web" và "tên".
tôi bắt đầu với vectơ các tên cột:
data.factors <- NULL
data.variables <- NULL
for(n in 1:length(data)){if(is.factor(data[[n]])){ data.factors <- c(data.factors,colnames(data[n]))} else next}
for(n in 1:length(data)){if(is.numeric(data[[n]]) || is.integer(data[[n]])){ data.variables <- c(data.variables,colnames(data[n]))} else next}
này đã làm việc để thực hiện nhiều đơn tố anovas:
for(variables in data.variables){
for(factors in data.factors){
output1 <- aov(lm(data[[variables]]~data[[factors]]))
cat(variables)
cat(" by ")
cat(factors)
cat("\n")
print(summary(output1))
}}
Nhưng tôi không thể có được nó để làm việc với ddply.
for (x in data.variables){
variable.summary <- ddply(data, .(site,name), summarise,
N = sum(!is.na(x[1])),
min = min(x[1], na.rm=TRUE),
max = max(x[1], na.rm=TRUE),
mean = mean(x[1], na.rm=TRUE),
sd = sd(x[1], na.rm=TRUE),
se = sd/sqrt(N)
)
print(variable.summary)
}
Tất cả tôi nhận được là như sau:
site name N min max mean sd se
1 Alberta A 1 weight weight NA NA NA
2 Alberta B 1 weight weight NA NA NA
3 Alberta C 1 weight weight NA NA NA
4 Alberta D 1 weight weight NA NA NA
5 Alberta E 1 weight weight NA NA NA
6 Nunavut A 1 weight weight NA NA NA
7 Nunavut B 1 weight weight NA NA NA
8 Nunavut C 1 weight weight NA NA NA
9 Nunavut D 1 weight weight NA NA NA
10 Nunavut E 1 weight weight NA NA NA
....
Đã được tôi để kiểm tra ddply sử dụng một biến duy nhất (gõ vào trực tiếp chứ không phải là tham chiếu thông qua "x") nó sẽ hoạt động tốt.
Có một mẹo để nhận chức năng nhận dạng ID cột được tham chiếu không? Tôi đã quen với PERL, với $ vô hướng của nó có thể được tham chiếu bất cứ nơi nào, và đã hy vọng một hệ thống tương tự đã có sẵn trong R.