如何在数据框中找到变量的百分比?

时间:2019-02-18 21:28:55

标签: r

因此,我附加了数据框“ BreastCancer”,并且试图在“ Class”(变量“ BreastCancer”)中发现恶性或良性的病例数。

当我这样做

summary(Class) 

返回

benign malignant
   458       241

我通过这样做找到了总和:

res <- c(sum(Class == "malignant"),sum(Class == "benign"))

其中“ res”等于恶性和良性之和。

我不明白如何将恶性或良性除以“ res”

我尝试过

res/(Class = "malignant")
res/Class[2]

我需要帮助来访问基本的恶性和良性数值。我该怎么做?

res <- c(sum(Class == "malignant"),sum(Class == "benign"))
Class[2]/res
(Class = "malignant")/res

两者返回无关的结果

我得到“较长的对象长度不是较短的对象长度的倍数”作为对(Class = "malignant")/res的返回,这完全没有道理

1 个答案:

答案 0 :(得分:1)

因此,我的第一句话是,您应该避免将数据帧附加到工作空间。看起来很方便,但是通常会导致错误和混乱。

第二,在问题中包括从何处获取数据会很有帮助。这恰好是一个众所周知的例子,但是即使如此,我也不得不考虑一下。所以我在包 mlbench

中找到了它
library(mlbench)
data(BreastCancer)

在您第一次尝试后,您可以执行以下操作:

x <- summary(BreastCancer$Class)
> x / sum(x)
   benign malignant 
0.6552217 0.3447783 

但是在R中,通常有很多不同的方法来达到相同的结果。其他选项可能是

> prop.table(table(BreastCancer$Class))

   benign malignant 
0.6552217 0.3447783 

t <- table(BreastCancer$Class)
> sum(BreastCancer$Class == "benign") / sum(t)
[1] 0.6552217
> sum(BreastCancer$Class == "malignant") / sum(t)
[1] 0.3447783