首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按组划分的数据加权测度

按组划分的数据加权测度
EN

Stack Overflow用户
提问于 2022-04-28 18:53:19
回答 1查看 31关注 0票数 1

我有一个如下所示的数据(真正的数据有更多的人):

代码语言:javascript
复制
Year   Person    Office
2005   Lauren    Boston 
2007   Lauren    Boston
2008   Lauren    Chicago 
2010   Lauren    Boston 
2012   Lauren    New York
2013   Lauren    New York 
2007   Kate      Atlanta
2009   Kate      Atlanta

我想要计算一个办公室人员级别的度量(计数),它捕获了一个人在进入当前职位之前所经历的办公室的加权数。公司名称:^2+(前一年工作经验长度)^2+.

以下是理想的输出。对劳伦来说,波士顿是她的第一间办公室。因此,她的波士顿数是0。对于劳伦来说,芝加哥是她的第二个办公室,她在来芝加哥办公室之前花了3年的时间。因此,她的芝加哥数是(3/3)^2=1。然后,劳伦第二次回到波士顿。在这里,她有过两次经历(波士顿3年,芝加哥2年(2010-2008年))。因此,她的第二次波士顿体验是(3/5)^2+(2/5)^2=0.52。

代码语言:javascript
复制
Office    Person  Count
Boston    Lauren  0
Chicago   Lauren  1
Boston    Lauren  0.52
New York  Lauren  0.3469
Atlanta   Kate    0
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-28 19:21:06

您可以使用类似于this question的类似方法

代码语言:javascript
复制
library(dplyr)

df %>% 
  group_by(Person, Office, grp = cumsum(coalesce(Office != lag(Office), TRUE))) %>% 
  slice(1) %>% 
  arrange(Year) %>% 
  group_by(Person) %>% 
  mutate(
    tmp_cnt = if_else(
      row_number() == 1, 
      0, 
      (Year - lag(Year))^2 
      ),
    Count = if_else((Year - first(Year))^2 == 0, 0, cumsum(tmp_cnt) / (Year - first(Year))^2)
    ) %>% 
  select(-grp, -tmp_cnt) %>% 
  ungroup()

这会返回

代码语言:javascript
复制
# A tibble: 5 x 4
   Year Person Office   Count
  <dbl> <chr>  <chr>    <dbl>
1  2005 Lauren Boston   0    
2  2007 Kate   Atlanta  0    
3  2008 Lauren Chicago  1    
4  2010 Lauren Boston   0.52 
5  2012 Lauren New_York 0.347
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72048893

复制
相关文章

相似问题

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