显示具有另一个值计数的值
showing values having counts of another value
我正在寻找数据中的异常值;哪些地方最差?
place = rep(c('AL','AK','AZ','AR','CA','CO','CT','DE','FL','GA','HI'), times=4)
measure = rep(c('meas1','meas2','meas3','meas4'), each=11)
set.seed(200)
rating = sample(c('good','bad'), size = 44, prob=c(2,1), replace=T)
df = data.frame(place, measure, rating)
这需要多个步骤;首先找到有任何差评的地方并将结果放入 table,告诉我 CA 是最差的,有 3 "bads":
bads = df %>%
filter(rating == 'bad')
sort(table(bads$place), decreasing = T)
> bads
place measure rating
1 AR meas1 bad
2 CA meas1 bad
3 CO meas1 bad
4 CT meas1 bad
5 DE meas2 bad
6 AK meas3 bad
7 CA meas3 bad
8 AK meas4 bad
9 CA meas4 bad
10 FL meas4 bad
11 GA meas4 bad
> sort(table(bads$place), decreasing = T)
CA AK AR CO CT DE FL GA AL AZ HI
3 2 1 1 1 1 1 1 0 0 0
[以下请无视...]
此外,如果评分是数字评分而不是分类评分,是否有类似的方法来获取落入 highest/lowest 四分位数的位置(不确定这是否是一个单独的问题)?
如果另一个post回答了这个问题,请指出;到目前为止,我已经看了很多关于计数和聚合的 post。
至于主要问题,也许你可以不用 sort
,因为它通常很耗时。
tb <- table(bads$place)
tb[which.max(tb)]
至于第二个问题,我不确定你所说的 属于 highest/lowest 四分位 的地方是什么意思,但也许你可以从正在关注。
rating2 <- sample(5, 44, TRUE)
df2 <- data.frame(place, measure, rating2)
qq <- quantile(df2$rating2)
y <- findInterval(df2$rating2, qq)
names(y) <- df2$place
data.table 包对于这种事情非常方便:
> data.table(df)[rating=='bad', .N,by="place"][order(-N)]
place N
1: CA 3
2: AK 2
3: AR 1
4: CO 1
5: CT 1
6: DE 1
7: FL 1
8: GA 1
我正在寻找数据中的异常值;哪些地方最差?
place = rep(c('AL','AK','AZ','AR','CA','CO','CT','DE','FL','GA','HI'), times=4)
measure = rep(c('meas1','meas2','meas3','meas4'), each=11)
set.seed(200)
rating = sample(c('good','bad'), size = 44, prob=c(2,1), replace=T)
df = data.frame(place, measure, rating)
这需要多个步骤;首先找到有任何差评的地方并将结果放入 table,告诉我 CA 是最差的,有 3 "bads":
bads = df %>%
filter(rating == 'bad')
sort(table(bads$place), decreasing = T)
> bads
place measure rating
1 AR meas1 bad
2 CA meas1 bad
3 CO meas1 bad
4 CT meas1 bad
5 DE meas2 bad
6 AK meas3 bad
7 CA meas3 bad
8 AK meas4 bad
9 CA meas4 bad
10 FL meas4 bad
11 GA meas4 bad
> sort(table(bads$place), decreasing = T)
CA AK AR CO CT DE FL GA AL AZ HI
3 2 1 1 1 1 1 1 0 0 0
[以下请无视...] 此外,如果评分是数字评分而不是分类评分,是否有类似的方法来获取落入 highest/lowest 四分位数的位置(不确定这是否是一个单独的问题)?
如果另一个post回答了这个问题,请指出;到目前为止,我已经看了很多关于计数和聚合的 post。
至于主要问题,也许你可以不用 sort
,因为它通常很耗时。
tb <- table(bads$place)
tb[which.max(tb)]
至于第二个问题,我不确定你所说的 属于 highest/lowest 四分位 的地方是什么意思,但也许你可以从正在关注。
rating2 <- sample(5, 44, TRUE)
df2 <- data.frame(place, measure, rating2)
qq <- quantile(df2$rating2)
y <- findInterval(df2$rating2, qq)
names(y) <- df2$place
data.table 包对于这种事情非常方便:
> data.table(df)[rating=='bad', .N,by="place"][order(-N)]
place N
1: CA 3
2: AK 2
3: AR 1
4: CO 1
5: CT 1
6: DE 1
7: FL 1
8: GA 1