我有一个数据集,其中包含多个变量的列和16组(为了简化,我会说,我有8组)不同的土壤和横断面。我希望用每一组的均值来制作barplot。但是P_ero和P_upsl,以及ZT_ero和ZT_upls等等都应该显示在图的旁边。我的数据(df)是这样的:(不同土壤(如P翻、ZT免耕)的碳和氮含量)。
name N_cont C_cont group
P_ero 1,064 8,380 1
P_ero 0,961 8,086 1
P_ero 0,977 8,331 1
ZT_ero 1,767 17,443 2
ZT_ero 1,802 18,264 2
ZT_ero 2,083 20,112 2
Ms_ero 1,547 14,380 3
Ms_ero 1,566 15,313 3
Ms_ero 1,505 14,760 3
Md_ero 1,512 14,303 4
Md_ero 1,656 15,331 4
Md_ero 1,500 13,788 4
P_upsl 1,121 10,581 5
P_upsl 1,159 10,460 5
P_upsl 1,223 10,171 5
ZT_upsl 1,962 20,656 6
ZT_upsl 1,784 16,780 6
ZT_upsl 1,720 17,482 6
Ms_upsl 1,578 16,228 7
Ms_upsl 1,634 15,331 7
Ms_upsl 1,394 13,419 7
Md_upsl 1,286 11,824 8
Md_upsl 1,241 11,452 8
Md_upsl 1,317 11,932 8我为每种土壤制作了数据的子集,就像这样(用于耕作):
P<-df[grepl("(P)", df$group), ]; P然后是碳含量的方法
tapply(X=P$C_cont,INDEX = P$name,FUN = mean,na.rm=TRUE)我实际上只想要在"name“列中带有"P”的组的均值,但结果是我得到了所有其他带有NAs的组:
P_ero ZT_ero Ms_ero Md_ero P_upsl ZT_upsl
8.265667 NA NA NA 10.404000 NA
Ms_upsl Md_upsl
NA NA 所以我不能用NAs做柱状图。有人知道这是怎么回事吗?
发布于 2016-03-24 16:58:07
你可以给你的tapply赋值,比方说x,然后x[!is.na(x)]来做这项工作。
发布于 2016-03-24 16:41:29
尝试:
df$name <- as.character(df$name)
P<-df[grepl("(P)", df$group), ]; P
tapply(X=P$C_cont,INDEX = P$name,FUN = mean,na.rm=TRUE)我猜你的df$name是factor的vector。但没有实际数据很难进行测试。
https://stackoverflow.com/questions/36195588
复制相似问题