如何计算R中所有列中不包含零的要素的百分比?

时间:2019-05-03 15:26:08

标签: r dataframe

我有一个数据框,其第一列为<script> document.getElementById("fr").innerHTML = "As Low As"; </script> ,而其他列的值在集合{0,1,2,-1,-2}中。

这是数据帧结构。

features

我想为每一列计算不包含0的要素的百分比。

感谢您的帮助。非常感谢。

3 个答案:

答案 0 :(得分:2)

也许以下内容可以满足您的需求。
df[-1] != 0返回一个逻辑矩阵,其colSums是每一列中非零条目的数量。除以行数再乘以100,即可得到所需的百分比。

100*colSums(df[-1] != 0)/nrow(df)
# Column1   Column2   Column3   Column4   Column5 
# 44.44444  50.00000  33.33333  44.44444  50.00000 
#  Column6   Column7   Column8 
# 50.00000 100.00000  77.77778

答案 1 :(得分:2)

我们可以在逻辑colMeans上使用matrix

colMeans(df[-1] != 0)
#    Column1   Column2   Column3   Column4   Column5   Column6   Column7   Column8 
# 0.4444444 0.5000000 0.3333333 0.4444444 0.5000000 0.5000000 1.0000000 0.7777778 

或使用tidyverse

library(tidyverse)
map_dbl(df[-1], ~ mean(.x != 0))

答案 2 :(得分:1)

我们可以使用colSums并除以数据框中的行数

colSums(df[-1] != 0)/nrow(df)

#Column1 Column2 Column3 Column4 Column5 Column6 Column7 Column8 
#  0.444   0.500   0.333   0.444   0.500   0.500   1.000   0.778 

或使用dplyr

library(dplyr)
df %>%  summarise_at(-1, ~sum(.!= 0)/n())