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