如何计算data.frame中列中的值?

如何计算data.frame中列中的值?,r,dataframe,count,sum,histogram,R,Dataframe,Count,Sum,Histogram,我有一个data.frame,其中包含存在-消失矩阵中的植被和关于水分的ELLENBERG值(值1-9和指示植物(!和=))。现在我想计算每列(观察点)中的植物数量,以及每个ELLENBERG值 T1-T4是我的观察点,当设备存在时,值为1,如果不存在0。在F_nr中是我的ELLENBERG值,从1到9。在F_sym中,指示灯带有和=。在我的输出中,我计算值,I。E在T1中,我有一个工厂有4,两个工厂有7,一个工厂有和一个带有= 以下是一些小示例数据: set.seed(1) df <-

我有一个data.frame,其中包含存在-消失矩阵中的植被和关于水分的ELLENBERG值(值1-9和指示植物(!和=))。现在我想计算每列(观察点)中的植物数量,以及每个ELLENBERG值


T1-T4是我的观察点,当设备存在时,值为
1
,如果不存在
0
。在F_nr中是我的ELLENBERG值,从1到9。在F_sym中,指示灯带有
=
。在我的输出中,我计算值,I。E在T1中,我有一个工厂有
4
,两个工厂有
7
,一个工厂有
和一个带有
=

以下是一些小示例数据:

set.seed(1)
df <- df2 <- data.frame(name=c("Acer campestre", "Acer negundo",    "Achillea millefolium agg.", "Agrostis stolonifera", "Alnus glutinosa", "Alnus incana"),
                        T1=rbinom(6, 1, .5), T2=rbinom(6, 1, .5), T3=rbinom(6, 1, .5), T4=rbinom(6, 1, .5), 
                        F_Nr=c(5,6,4,7,9,7), F_sym=c(NA, NA, NA, "!","=", "="))
set.seed(1)

df我们可以结合使用
aggregate()
merge()


df2我不明白预期输出是如何从输入中得出的,即
F_nr
是如何从
0 1 0
变为
1 0 0 1
,等等?T1-T4是我的观察点,当设备存在时,值是
1
,如果不是
0
。在F_nr中是我的ELLENBERG值,从1到9。在F_sym中,指示灯带有
=
。在我的输出中,我计算值,I。E在T4中,我有两个工厂
7
,两个工厂
=
,一个工厂
等等。这能解释我的问题吗?你确定你用的是正确的种子吗?当我使用
seed(1)
T4包含0和0表示两个
7
s,1和0表示两个
=
s,0表示
。谢谢,我编辑了我的问题!谢谢,这很好用,我的data.frame足够大,所以我可以在创建
counts0
@Nesch:Ok后完成。我注意到在
=
行中,我的
计数与您的
df\u计数之间存在差异。我认为观察结果也应该总结在这里?你是对的,你的代码工作正确,只有我的眼睛看错了行--
df_count <- data.frame(F_sum=c(1,2,3,4,5,6,7,8,9,"=", "!"), 
                       T1=c(0,0,0,1,0,0,2,0,0,1,0), 
                       T2=c(0,0,0,1,1,1,0,0,0,0,0),
                       T3=c(0,0,0,1,1,0,1,0,1,1,1),
                       T4=c(0,0,0,1,0,1,0,0,1,1,0))
df2 <- read.table(text="
                        name T1 T2 T3 T4 F_Nr F_sym
            'Acer campestre'  0  1  1  0    5  <NA>
              'Acer negundo'  0  1  0  1    6  <NA>
 'Achillea millefolium agg.'  1  1  1  1    4  <NA>
      'Agrostis stolonifera'  1  0  0  0    7     !
           'Alnus glutinosa'  0  0  1  1    9     =
              'Alnus incana'  1  0  1  0    7     =",
              header=TRUE, stringsAsFactors=FALSE)

fnr <- aggregate(df2[,2:5], list(df2$F_Nr), sum)
fsm <- aggregate(df2[,2:5], list(df2$F_sym), sum)
counts0 <- rbind(fnr, fsm)

dtf <- data.frame(F_sum=c(1:9, "=", "!"), stringsAsFactors=FALSE)

counts <- merge(dtf, counts0, by.x="F_sum", by.y="Group.1", all.x=TRUE)

counts[is.na(counts)] <- 0
counts[match(dtf$F_sum, counts$F_sum), ]
#    F_sum T1 T2 T3 T4
# 3      1  0  0  0  0
# 4      2  0  0  0  0
# 5      3  0  0  0  0
# 6      4  1  1  1  1
# 7      5  0  1  1  0
# 8      6  0  1  0  1
# 9      7  2  0  1  0
# 10     8  0  0  0  0
# 11     9  0  0  1  1
# 2      =  1  0  2  1
# 1      !  1  0  0  0