楼主: 18174715760
4348 13

[问答] 怎么让用R来筛选和数量数据啊? [推广有奖]

  • 0关注
  • 0粉丝

本科生

25%

还不是VIP/贵宾

-

威望
0
论坛币
7 个
通用积分
0.8141
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
3171 点
帖子
51
精华
0
在线时间
89 小时
注册时间
2022-3-8
最后登录
2026-1-8

楼主
18174715760 发表于 2022-4-29 09:55:50 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

刚学习R一个月左右,感觉哪哪都是问题,实在是太抓狂了

如图,这个数据集是民宿数据,有15个变量,现在的数据是月度数据,我想把它转化成年度数据。
但是它不是每个月的数据都有,很多民宿的有些月的数据是缺失的,得先筛选出12个月度数据都全的民宿,然后对revenue和occupy rate求和,对ADR求均值,从而转换成年度数据

头秃了,感觉太难了[cry]求帮助呀

截图20220429091255.png 截图20220429090334.png
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Revenue Occupy Venue 月度数据 年度数据

回帖推荐

llb_321 发表于11楼  查看完整内容

上午忙,随便写了补充代码。 下面,我用示例数据验证了一下,没问题,你可以参考一下。 可以看出A、B的2020年度存在NA,不符合统计要求;C的2021年只有6个月记录,也不符合要求。解决方案:按ID和year分组,计算各组的和、均值,同时统计记录数(作为临时变量),去除存在NA的结果,筛选月份全(年度记录数等于12)的结果,去除临时变量。 这段代码,你可以一步步地执行,看看每一步结果的变换,就可以验证上午的代 ...

llb_321 发表于9楼  查看完整内容

llb_321 发表于7楼  查看完整内容

我给你的只是示例,本来想你理解后,把变量自己改一下就可以用的。 我又没有你的数据,所以弄了一个示例数据来说明代码,那个示例数据你实际操作时不需要的。 先不要管NA,因为NA参与计算的结果还是NA,计算完毕再用na.omit(),结果所有不包含NA的。不信的话,你截取几十行自己的数据验证一下啊。 你只需要下面的这个代码,也就是上面那个代码把变量替换一下就可以用啊。

本帖被以下文库推荐

沙发
18174715760 发表于 2022-4-29 09:56:56
我的for循环是不是没写对,运行出来结果奇奇怪怪的

藤椅
18174715760 发表于 2022-4-29 09:57:54
在线求不是for循环的方法,用for循环的话我感觉我过完5.1都出不来结果

板凳
llb_321 在职认证  发表于 2022-4-29 16:06:58
不要用循环。按你的思路,写个例子,参考一下。
先不要管NA,计算完毕再去除就好。因为你的店可能对应不同年度,所以用店名和年份两个变量分组。
  1. library(dplyr)
  2. #示例数据
  3. d <- data.frame(
  4.   x1 = c("A", "A", "B", "B", "C", "D", "D", "D"), #店名
  5.   x2 = c(1, 1, 1, 2, 1, 1, 1, 2), #假设是年份,不用管月份
  6.   x3 = c(4, NA, NA, 3, 3, 2, 4, NA), #要求和的变量
  7.   x4 = c(8, 9, 7, 1, 5, 4, 3, 2),#要求和的变量
  8.   x5 = c(8, 5, 4, 3, 9, 7, 12, 7))#要求均值的变量

  9. new <- d %>%
  10.   group_by(x1, x2) %>%
  11.   summarize(x3Sum = sum(x3),
  12.             x4Sum = sum(x4),
  13.             x5Avr = mean(x5)) %>%
  14.   na.omit()
复制代码
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

报纸
18174715760 发表于 2022-4-29 22:12:57
llb_321 发表于 2022-4-29 16:06
不要用循环。按你的思路,写个例子,参考一下。
先不要管NA,计算完毕再去除就好。因为你的店可能对应不同 ...
谢谢你。请问x1是要列出所有店名么?但是观测值太多了,230多万条,可能列不出来

地板
18174715760 发表于 2022-4-29 22:38:19
llb_321 发表于 2022-4-29 16:06
不要用循环。按你的思路,写个例子,参考一下。
先不要管NA,计算完毕再去除就好。因为你的店可能对应不同 ...
还有就是,缺失的月份的数据它不是NA空着的,它是整行观测值都没有,比如说A店2019年只有1、2、3月三行数据,B店只有2019年4、5、6、7月份几行数据,先求和或求均值的话可能看不出来原始数据有缺失

继续头秃

7
llb_321 在职认证  发表于 2022-4-30 09:41:57
我给你的只是示例,本来想你理解后,把变量自己改一下就可以用的。
我又没有你的数据,所以弄了一个示例数据来说明代码,那个示例数据你实际操作时不需要的。
先不要管NA,因为NA参与计算的结果还是NA,计算完毕再用na.omit(),结果所有不包含NA的。不信的话,你截取几十行自己的数据验证一下啊。

你只需要下面的这个代码,也就是上面那个代码把变量替换一下就可以用啊。

  1. new <- shanghai_monthly_new %>%
  2.   group_by(Property.ID, year) %>%
  3.   summarize(OccRateY = sum(OccupancyRate),
  4.             RevenueY = sum(Revenue..Native),
  5.             ADRY = mean(ADR..Native)) %>%
  6.   na.omit()
复制代码


已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 热心帮助其他会员

总评分: 学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

8
18174715760 发表于 2022-5-3 08:42:12
llb_321 发表于 2022-4-30 09:41
我给你的只是示例,本来想你理解后,把变量自己改一下就可以用的。
我又没有你的数据,所以弄了一个示例数 ...
非常感谢你!!我明白你的意思了。但是我可能还是没有表达清楚。我的原始数据很多是如图所示的样子,月份数据不全,加总或者求平均来计算的话会存在误差,所以我想可能还是得删掉月份数据不全的那些民宿? 截图20220503084008.png
截图20220503083012.png

9
llb_321 在职认证  发表于 2022-5-4 10:23:07
  1. new <- shanghai_monthly_new %>%
  2.   group_by(Property.ID, year) %>%
  3.   summarize(OccRateY = sum(OccupancyRate),
  4.             RevenueY = sum(Revenue..Native),
  5.             countMonth = n(),
  6.             ADRY = mean(ADR..Native)) %>%
  7.   na.omit() %>%
  8.   filter(countMonth == 12)
复制代码
已有 1 人评分论坛币 学术水平 收起 理由
jiangbeilu + 10 + 5 精彩帖子

总评分: 论坛币 + 10  学术水平 + 5   查看全部评分

10
llb_321 在职认证  发表于 2022-5-4 10:28:14
再试试上面的代码,执行时出的提示信息不用管它

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-25 11:27