楼主: anti-garlic
2172 7

[一般统计问题] 排序后前n个数据求和直到满足条件,有这样的命令吗 [推广有奖]

  • 0关注
  • 0粉丝

小学生

64%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
115 点
帖子
7
精华
0
在线时间
6 小时
注册时间
2014-9-15
最后登录
2019-2-17

楼主
anti-garlic 发表于 2017-2-24 10:17:40 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
先把observations按照变量cost排序,把前n个observation的capacity求和,直到capacity之和达到5000,求n。
求问有这样的命令吗?
二维码

扫码加我 拉你入群

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

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

关键词:observations observation observat Capacity ATION 数据库 成本 capacity

沙发
正负号 发表于 2017-2-24 11:37:52
不知你要用哪个工具实现这个过程呢?我随手用R模拟了下你描述的这个计算,你看看能用不?(未考虑代码优化)
a <- c(1:500)
b <- rnorm(500,150,18)
c <- rnorm(500,88,12)
t <- data.frame(a,b,c)
names(t) <- c("id","capacity","cost")
mydata <- t[order(t$cost),]


result <- ""
for (i in 1:500){
  temp <- sum(mydata$capacity[1:i])
  if (temp<=5000)  {
     result <- mydata[1:i,]
   }
   else break
  }

藤椅
正负号 发表于 2017-2-24 11:44:31
附上结果:
length(result$capacity)#输出结果的变量数目(计算到第33个符合条件)
[1] 33
> sum(mydata$capacity[1:33])#前33个之和4954
[1] 4954.459
> sum(mydata$capacity[1:34])#前34个之和5116,超5000
[1] 5115.677

板凳
anti-garlic 发表于 2017-2-26 03:50:03
正负号 发表于 2017-2-24 11:44
附上结果:
length(result$capacity)#输出结果的变量数目(计算到第33个符合条件)
[1] 33
可以用Stata吗?

报纸
黃河泉 在职认证  发表于 2017-2-26 17:30:48
anti-garlic 发表于 2017-2-26 03:50
可以用Stata吗?
没资料无法试试,但你可
  1. egen x = sum(capacity)
  2. gen d = (x == 5000)
复制代码
则 d = 1 的位置就是你的答案了!(当然,我不太认为会刚好等于 5000,所以你可能找不到 d = 1)

地板
anti-garlic 发表于 2017-2-26 23:55:15
黃河泉 发表于 2017-2-26 17:30
没资料无法试试,但你可则 d = 1 的位置就是你的答案了!(当然,我不太认为会刚好等于 5000,所以你可能 ...
好的!感谢大神!

7
anti-garlic 发表于 2017-2-26 23:55:39
正负号 发表于 2017-2-24 11:44
附上结果:
length(result$capacity)#输出结果的变量数目(计算到第33个符合条件)
[1] 33
感谢大神!!

8
anti-garlic 发表于 2017-3-1 05:47:47
sort cost
gen cumulative=sum(capacity)
gen gen1=1 if sum(capacity)<=5000

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-21 13:43