-1
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 时,“漂移”列的“真”百分比是多少?谢谢你。

4

2 回答 2

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 
于 2012-07-20T10:18:23.187 回答
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

于 2012-07-20T10:13:50.660 回答