В настоящее время я использую набор данных «алмазы» из пакета ggplot2. Я хочу иметь возможность подсчитать количество бриллиантов, которые соответствуют двум условиям в первых n наблюдениях, в данном случае цвет «E» и чистота «SI2». Я написал функцию ниже, которая решает эту проблему, однако я хотел бы иметь возможность сделать это без необходимости запуска цикла for. Есть ли способ заставить эту функцию работать без цикла for? Набор данных содержит 54000 наблюдений.
library('ggplot2')
data(diamonds)
countfreq <- function(n) {
#Set k to 0
k <- 0
for(i in 1:n) {
if (diamonds$color[i] == 'E' & diamonds$clarity[i] == 'SI2')
k <- k + 1
}
return(k)
}
countfreq(50)
2
countfreq(100)
3
Первые две строки кадра данных приведены ниже.
carat cut color clarity depth table price x y z
1 0.23 Ideal E SI2 61.5 55.0 326 3.95 3.98 2.43
2 0.21 Premium E SI1 59.8 61.0 326 3.89 3.84 2.31
nrow(diamonds[diamonds$color == 'E' & diamonds$clarity == 'SI2',])
- person hrbrmstr   schedule 14.10.2017