R语言 如何从使用多个变量的聚合数据中获取条形图下的列名?

jhdbpxl9  于 2023-09-27  发布在  其他
关注(0)|答案(1)|浏览(72)

我有一个名为ufc.csv的树数据文件,在用read.csv()函数阅读它之后,我使用一个聚合函数来获得树直径(Dbh)和树高(Height)的平均值,并按物种名称(Species)排序:

ufcmeans = aggregate(x = ufc[,4:5], by = ufc[3], FUN = mean, na.rm = TRUE)

第一行是空的,所以,在使用ufcmeans[-1,]删除它之后,我得到了这个 Dataframe :

Species Dbh Height
2 DF 383.7143 254.3036
3 ES 403.3333 280.0000
4 F 372.0000 270.0000
5 FG 381.5000 275.0000
6 GF 351.5838 242.6522
7 HW 209.0000 198.0000
8 LP 232.8571 218.3333
9 PP 568.5000 330.0000
10 SF 136.4286 154.1000
11 WC 375.0757 234.8777
12 WL 340.0588 252.5714
13 WP 319.7273 251.3939

我的目标是制作一个条形图,其中Dbh和Height的平均值交替显示,并按Species组织,每对列下都有Species名称(因此前两列是第一个Dbh和Height平均值,名称“DF”位于这两列下,依此类推)。
起初,我尝试使用as.matrix()函数将ufcmeans转换为一个名为meansmatrix的矩阵,然后将其插入barplot()函数,但我得到了一个错误:

> barplot(meansmatrix, beside=TRUE, col=c("red","blue"))
Error in -0.01 * height : non-numeric argument to binary operator

接下来,我尝试创建一个没有物种列的矩阵,我能够在一个图上得到两个条形图,但是物种名称不在那里(这是有意义的,因为我删除了它),所以我尝试使用names.arg语句来包含物种名称,但是我得到一个错误,说没有足够的名称。
如何使用barplot()函数获得我设想的条形图?

hc8w905p

hc8w905p1#

你在找这个吗?

barplot(cbind(Dbh, Height) ~ Species, dat, beside=TRUE, legend.text=names(dat)[2:3])

  • 数据:*
dat <- read.table(header=TRUE, text='
                  Species Dbh Height
2 DF 383.7143 254.3036
3 ES 403.3333 280.0000
4 F 372.0000 270.0000
5 FG 381.5000 275.0000
6 GF 351.5838 242.6522
7 HW 209.0000 198.0000
8 LP 232.8571 218.3333
9 PP 568.5000 330.0000
10 SF 136.4286 154.1000
11 WC 375.0757 234.8777
12 WL 340.0588 252.5714
13 WP 319.7273 251.3939')

相关问题