首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不同的行中减去两个值,将它们分组为另一个变量?

如何在不同的行中减去两个值,将它们分组为另一个变量?
EN

Stack Overflow用户
提问于 2017-09-17 16:19:54
回答 1查看 23关注 0票数 1

我有以下数据集

代码语言:javascript
复制
 Month   Year   Hotel_Name   Reviewer_Score  
 8       2015   ambassador         7.711111
 9       2015   ambassador         8.400000
 12      2015   ambassador         9.457890
 2       2016   ambassador         8.398733
 4       2015   nh hotel           8.934023
 7       2015   nh hotel           7.345532
 11      2015   nh hotel           6.893445
 1       2016   nh hotel           8.834923

我想知道每家酒店的第一个分数和最后一个分数之间的差别,并把它们放在Hotel_Name的一个新桌子上。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-17 16:30:35

我不确定你想要第一和最后的分数之间的区别(按日期,最近-最早)还是第一和最后的分数(按数值计算,最多)。

为第一个

代码语言:javascript
复制
library(dplyr)
library(lubridate)
ans1 <- df %>%
         group_by(Hotel_Name) %>%
         arrange(Hotel_Name, parse_date_time(paste(Month, Year), "my")) %>%
         summarise(Diff = abs(last(Reviewer_Score) - first(Reviewer_Score)))

# A tibble: 2 x 2
  # Hotel_Name     Diff
      # <fctr>    <dbl>
# 1 ambassador 0.687622
# 2   nh_hotel 0.099100

第二次

代码语言:javascript
复制
ans2 <- df %>%
         group_by(Hotel_Name) %>%
         summarise(Diff = max(Reviewer_Score) - min(Reviewer_Score))

# A tibble: 2 x 2
  # Hotel_Name     Diff
      # <fctr>    <dbl>
# 1 ambassador 1.746779
# 2   nh_hotel 2.040578

你的数据

代码语言:javascript
复制
df <- read.table(text="Month   Year   Hotel_Name   Reviewer_Score  
 8       2015   ambassador         7.711111
 9       2015   ambassador         8.400000
 12      2015   ambassador         9.457890
 2       2016   ambassador         8.398733
 4       2015   nh_hotel           8.934023
 7       2015   nh_hotel           7.345532
 11      2015   nh_hotel           6.893445
 1       2016   nh_hotel           8.834923", header=TRUE)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46266238

复制
相关文章

相似问题

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