Как найти процент для переменной в кадре данных? - PullRequest
0 голосов
/ 19 февраля 2019

Итак, у меня есть прикрепленный фрейм данных "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 голосов
/ 19 февраля 2019

Итак, мой первый комментарий: вам следует избегать прикрепления фреймов данных к вашему рабочему пространству.Это может показаться удобным, но обычно это приводит к ошибкам и путанице в будущем.

Во-вторых, полезно указать в своем вопросе, откуда вы получаете данные.Это довольно известный случай, но мне пришлось подумать секунду.Поэтому я нашел его в пакете 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...