我有一个数据集,包含列中的几个变量和16个组(为了简化它,我说,我有8个组)用于不同的土壤和横断面。我希望用每组的平均值制作条形图。但是P_ero和P_upsl,以及ZT_ero和ZT_upls等应该在图表旁边显示。 我的数据(df)看起来像:(不同土壤的碳和氮含量(例如P-Plowing,ZT-zero耕作))。
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)
我实际上只是希望在“名称”列中使用“P”的组的方法,但结果我得到所有其他具有NA的组:
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
所以我不能用NA制作条形图。 有谁知道,这可能有用吗?
答案 0 :(得分:2)
您可以将tapply
分配给某个值,例如x
,然后x[!is.na(x)]
完成工作。
答案 1 :(得分:0)
尝试:
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
是vector
factor
。但如果没有实际数据,很难进行测试。