我有一个数据框,其第一列为<script>
document.getElementById("fr").innerHTML = "As Low As";
</script>
,而其他列的值在集合{0,1,2,-1,-2}中。
这是数据帧结构。
features
我想为每一列计算不包含0的要素的百分比。
感谢您的帮助。非常感谢。
答案 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())