首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中基于范畴的rescale的使用

R中基于范畴的rescale的使用
EN

Stack Overflow用户
提问于 2018-10-30 18:15:26
回答 1查看 48关注 0票数 0

我有一个包含层次和分数的数据。我想取消基于等级5的分数从100-91,4从90-81,3从80-71等。数据样本如下…

代码语言:javascript
复制
Tier Score  
1 95  
2 85  
3 90  
3 87  
1 90  
4 88  
5 90  
2 90  
5 75  
3 80  
4 72  
1 86  
5 70  

我到目前为止

代码语言:javascript
复制
library(scales)
df$scale = ifelse(df$tier == "5", rescale(df[df$tier == "5",]$score, to = c(91, 100)), df$scale)

输出是NA

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-30 18:46:36

首先,创建一个包含rescale限制的列表。第一个列表元素用于Tier 1,第二个列表元素用于Tier 2等。

代码语言:javascript
复制
limits <- list(c(60, 51), c(61, 70), c(71, 80), c(81, 90), c(91, 100))

可以在以下dplyr方法中使用此列表:

代码语言:javascript
复制
library(dplyr)
df %>%
   group_by(Tier) %>%
   mutate(scale = rescale(Score, to = limits[[first(Tier)]]))

结果:

代码语言:javascript
复制
# A tibble: 13 x 3
# Groups:   Tier [5]
    Tier Score scale
   <int> <int> <dbl>
 1     1    95  51  
 2     2    85  61  
 3     3    90  80  
 4     3    87  77.3
 5     1    90  56  
 6     4    88  90  
 7     5    90 100  
 8     2    90  70  
 9     5    75  93.2
10     3    80  71  
11     4    72  81  
12     1    86  60  
13     5    70  91  
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53070476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档