df <- data.frame(dive=factor(sample(c("dive1","dive2", "dive3"),20,replace=TRUE)),speed=runif(20))
> df
dive speed Drift
1 dive1 0.80668490 TRUE
2 dive1 0.53349584 FALSE
3 dive2 0.07571784 TRUE
4 dive2 0.39518628 TRUE
5 dive1 0.84557955 TRUE
6 dive1 0.69121443 FALSE
7 dive1 0.38124950 TRUE
8 dive2 0.22536126 FALSE
9 dive1 0.04704750 FALSE
10 dive2 0.93561651 TRUE
假设我有一个这种形式的数据框,第三列名为“Drift”,其中行值为“TRUE”或“FALSE”。当“潜水”等于特定值时,我将如何计算等于TRUE的行百分比。即潜水时== 1“漂移”列的百分比是“真”? 三江源。
答案 0 :(得分:2)
你可以尝试:
df$Drift <- c(T,F)
sapply(split(df, df$dive), function(x) sum(x$Drift) / nrow(x) * 100 )
dive1 dive2 dive3
57.14286 42.85714 50.00000
答案 1 :(得分:0)
尝试
set.seed(1)
df$Drift<-sample(c(T,F),20,replace=T)
sapply(split(df,df$dive),function(x){mean(x$Drift)})
> sapply(split(df,df$dive),function(x){mean(x$Drift)})
dive1 dive2 dive3
0.0000000 0.7500000 0.2727273
如果你想要百分比,将均值乘以100