【发布时间】:2015-05-17 23:29:54
【问题描述】:
如何按 Tree.Species Compartment、Stand、Transect 和 Plot 对 DBH 和 Basal 面积求和?
Tree.Species DBH Basal Area Compartment Stand Transect Plot
Sugar Maple 16.4 211.1336 107 20 2 3
Sugar Maple 25.1 494.55785 107 20 2 3
Hemlock 15.1 178.98785 209 30 1 2
我在尝试:
aggregate(.~ Compartment + Stand + Transect + Plot + Tree.Speices, data = Trees, FUN = sum)
但我不断收到此错误:
Error in model.frame.default(formula = cbind(DBH, Basal.Area, Transect.., :
variable lengths differ (found for 'Transect')
我的变量是唯一值,数据中并非所有可能的组合。
Compartment: 107 209 310 231
Stand: 20 110 30 240 80 300
Transect: 1 2 3
Plot: 1 2 3 4 5 6
输入:
structure(list(Tree.Speices = structure(c(53L, 49L, 49L, 49L,
49L, 11L, 49L, 12L, 49L, 4L, 49L, 49L, 49L, 53L, 49L, 49L, 4L,
4L, 33L, 4L, 11L, 53L, 11L, 53L, 53L, 21L, 21L, 53L, 49L, 53L,
49L, 49L, 53L, 21L, 4L, 4L, 49L, 12L, 21L, 49L, 49L, 49L, 49L,
9L, 49L, 49L, 11L, 11L, 53L, 47L, 33L, 11L, 5L, 49L, 11L, 11L,
38L, 11L, 49L, 11L, 11L, 11L, 11L, 49L, 53L, 53L, 53L, 47L, 49L,
49L, 49L, 47L, 49L, 33L, 4L, 4L, 47L, 4L, 11L, 49L, 53L, 49L,
11L, 11L, 11L, 49L, 11L, 11L, 11L, 11L, 11L, 49L, 11L, 49L, 47L,
49L, 11L, 11L, 11L, 11L, 21L), .Label = c("American Elm", "Aspen",
"Balsam", "Basswood", "Beech", "Big-Toothed Aspen", "Black Cherry",
"Cedar", "Cottonwood", "Elm", "Hemlock", "Hop Hornbeam", "paper birch",
"Paper Birch", "Poplar", "Quaking Aspen", "Red Maple", "Red Oak",
"Red Spruce", "snag", "Snag", "Snag (Aspen)", "Snag (Basswood)",
"Snag (Beech)", "Snag (Big-Toothed Aspen)", "SNAG (Big-Toothed Aspen)",
"snag (conifer)", "Snag (Conifer)", "Snag (Cottonwood)", "Snag (Elm)",
"Snag (hardwood)", "snag (Hemlock)", "Snag (Hemlock)", "SNAG (Hemlock)",
"Snag (maple)", "Snag (Maple)", "Snag (Oak)", "Snag (Paper Birch)",
"Snag (Poplar)", "Snag (Red Maple)", "snag (Sugar Maple)", "Snag (Sugar Maple)",
"Snag (Sugar)", "Snag (White Ash)", "Snag (White Pine)", "snag (Yellow Birch)",
"Snag (Yellow Birch)", "SNAG (Yellow Birch)", "Sugar Maple",
"White Ash", "White Birch", "White Pine", "Yellow Birch"), class = "factor"),
DBH = c(55.7, 21.3, 14, 38, 6.5, 20.3, 33.2, 6.3, 30.5, 22.3,
32.7, 8.9, 41.8, 30, 24.6, 13.8, 56.6, 49.5, 49.9, 63.2,
28, 39, 21, 25.7, 29.9, 38, 17.5, 22.4, 6.2, 20.3, 18.3,
21, 24.7, 49.5, 6.4, 30.3, 19.4, 6, 37.8, 24.6, 24.4, 9.5,
17.4, 49.2, 26, 31, 23.6, 19.8, 37.9, 25.8, 31.5, 18.1, 34.4,
59.7, 28.2, 21, 16.4, 23.7, 34.4, 24.7, 15.4, 12, 24.2, 34.2,
19.4, 15.1, 34.9, 34.8, 6.6, 61.2, 25.4, 38.8, 28.9, 32.3,
43.9, 33.8, 27.1, 37, 21.2, 26.4, 27.4, 10.6, 55.1, 69.4,
24, 25.4, 51, 20.2, 14.3, 31.8, 48.8, 38.3, 19.6, 26.3, 34.5,
6.3, 41.3, 32.6, 14.6, 9.1, 57.8), Basal.Area = c(2435.45465,
356.14665, 153.86, 1133.54, 33.16625, 323.49065, 865.2584,
31.15665, 730.24625, 390.37265, 839.39265, 62.17985, 1371.5834,
706.5, 475.0506, 149.4954, 2514.7946, 1923.44625, 1954.65785,
3135.4784, 615.44, 1193.985, 346.185, 518.48465, 701.79785,
1133.54, 240.40625, 393.8816, 30.1754, 323.49065, 262.88865,
346.185, 478.92065, 1923.44625, 32.1536, 720.70065, 295.4426,
28.26, 1121.6394, 475.0506, 467.3576, 70.84625, 237.6666,
1900.2024, 530.66, 754.385, 437.2136, 307.7514, 1127.58185,
522.5274, 778.91625, 257.17385, 928.9376, 2797.81065, 624.2634,
346.185, 211.1336, 440.92665, 928.9376, 478.92065, 186.1706,
113.04, 459.7274, 918.1674, 295.4426, 178.98785, 956.13785,
950.6664, 34.1946, 2940.1704, 506.4506, 1181.7704, 655.63985,
818.98265, 1512.85985, 896.8154, 576.51185, 1074.665, 352.8104,
547.1136, 589.3466, 88.2026, 2383.26785, 3780.8426, 452.16,
506.4506, 2041.785, 320.3114, 160.52465, 793.8234, 1869.4304,
1151.50865, 301.5656, 542.97665, 934.34625, 31.15665, 1338.96665,
834.2666, 167.3306, 65.00585, 2622.5594), Compartment = c(107L,
107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L,
107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L,
107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L,
107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L,
107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L,
107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L,
107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L,
107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L,
107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L,
107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L, 107L
), Stand = c(20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L,
20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L,
20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L,
20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L,
20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L,
20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L,
20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L,
20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L,
20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L), Transect.. = c(2L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), Plot.. = c(1L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L)), .Names = c("Tree.Speices",
"DBH", "Basal.Area", "Compartment", "Stand", "Transect..", "Plot.."
), row.names = 67:167, class = "data.frame")
【问题讨论】:
-
变量如何有不同的长度?
Trees不在数据框中吗? (你能分享dput(Trees)的输出吗?) -
首先,使用
make.names:names(Trees) <- make.names(names(Trees))使您的数据名称有效。然后,使用cbind指定多个响应变量aggregate(cbind(DBH, Basal.Area) ~ Compartment + Stand + Transect + Plot + Tree.Species, data = Trees, FUN = sum) -
我有 2540 个观察结果,所以它不允许我发布整个 dput 输出。这是一个数据框,我的意思是不是每个样带都有 6 个地块,看起来这是导致问题的原因,但我不确定。 `
-
我仍然收到错误:
Error in model.frame.default(formula = cbind(DBH, Basal.Area) ~ Compartment + : variable lengths differ (found for 'Transect')我已将我的数据子集添加到我的问题中。 -
您指定了错误的名称。首先查看
names(Tree),然后建立您的呼叫。无论如何,aggregate(cbind(DBH, Basal.Area) ~ Compartment + Stand + Transect.. + Plot.. + Tree.Speices, data = Trees, FUN = sum)应该可以工作。
标签: r aggregate subset plyr apply