当另一列等于特定值时,计算一列值的百分比

时间:2012-07-20 10:04:15

标签: r dataframe percentage

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“漂移”列的百分比是“真”? 三江源。

2 个答案:

答案 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