Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从R数据帧中提取隐藏信息_R_Dataframe_Dplyr - Fatal编程技术网

从R数据帧中提取隐藏信息

从R数据帧中提取隐藏信息,r,dataframe,dplyr,R,Dataframe,Dplyr,我有一个数据框架如下所示: person year Office Job rank Harry 2002 Los Angeles CEO 0 Harry 2006 Boston CEO 0 Harry 2006 Los Angeles Advisor 1 Harry 2006 Chicago Chairman 2 Peter 200

我有一个数据框架如下所示:

person    year    Office        Job      rank
Harry     2002    Los Angeles   CEO       0
Harry     2006    Boston        CEO       0
Harry     2006    Los Angeles   Advisor   1
Harry     2006    Chicago       Chairman  2

Peter     2001    New York      Director  0
Peter     2001    Chicago       CFO       1
Peter     2001    Chicago       COO       2
Peter     2002    Chicago       CEO       0

Lily      2005    Springfield   CEO       0
Lily      2007    New York      CFO       0
Lily      2008    Boston        COO       0
Lily      2011    Chicago       Advisor   0
Lily      2011    New York      board     1
 
Sam       2006    Chicago       COO       0
Sam       2007    Chicago       CFO       0
Sam       2007    Chicago       CEO       1
Sam       2010    New York      Advisor   0
我想知道在个人层面,谁至少有以下两种模式之一:

  • 在上一个可用年份中,某个办公室的排名为0,在下一个可用年份中,该办公室仍然存在,但排名不再存在,并且应该大于0(职务不重要)。例如,哈利的洛杉矶

  • 在下一个可用年份中,一个办公室的排名为0,而在上一个可用年份中,该办公室仍然存在,但排名不再存在,应该大于0(例如,对于Peter,芝加哥)

  • 请注意,Lily的纽约没有上述任何一种情况,因为2007年不是Lily的上一个可用年份(2008年是)

    请注意,一个办公室可以在一年内存在多次(不同的工作)。《芝加哥为山姆》展示了这样一个案例。请注意,Sam的芝加哥也不计算在内,尽管芝加哥在2007年排名1,在上一个可用年份排名0,但芝加哥在2007年也排名0

    因此,输出应该如下所示:

    person    yes/no
    Harry     1
    Peter     1
    Lily      0
    Sam       0
    

    如果我理解正确,我认为这会奏效。您想:

  • 计算一个人年办公室中是否有任何职位排名为0
  • 对于每个人员办公室,检查您感兴趣的两个案例(当前行的排名为0,上一行或下一行没有排名为0。如果您扩展数据框以包括每个办公室每个人员年度的所有组合,则更容易做到这一点
  • 对于每个人,检查是否有任何行与指定的任何一种情况匹配,并填充缺少的值
  • 库(tidyverse)
    df%
    按(人、年、办公室)分组%>%
    总结(任意排名任意排名)
    解组()%>%
    完成(嵌套(人、年、办公室)%>%
    安排(人员、办公室、年份)%>%
    分组单位(个人、办公室)%>%
    变异(
    案例1=任何排名0&!领先(任何排名0),#当前为0,下一个不是0
    案例2=任意秩0&!滞后(任意秩0)#当前0,以前不是0
    ) %>%
    分组单位(人)%>%
    总结(结果=替换(任何(案例1)任何(案例2),错误))
    #>#tibble:4 x 2
    #>人因
    #>      
    #>1哈里:真的吗
    #>2莉莉假
    #>3彼得·特鲁尔
    #>4萨姆·福斯
    

    由(v1.0.0)于2021-05-20创建的(v1.0.0)

    什么是“可用年”?我对您使用的逻辑感到非常困惑。例如,您说“2007年不是Lily的上一个可用年(2008年是)”,但数据中只有Lily在纽约的2007年和2011年的行。谢谢您的提问!基本单位是个人,而不是个人/地点