如何在R中使用dplyr生成以当前行为条件的多行?

如何在R中使用dplyr生成以当前行为条件的多行?,r,dataframe,dplyr,R,Dataframe,Dplyr,我有一个包含多个4位代码的数据帧。根据第三个数字的值,我希望以以下方式操作数据帧: 如果是第三位数字!=“0”不执行任何操作 如果第三位数字==“0”,则删除此元素并用以下元素替换它xx{10-99}。其中xx是元素的首两位数字,{10-99}表示应将{xx10,xx11,xx12,…,xx99}添加到数据帧中 有什么想法可以用dplyr实现吗? 提前谢谢 e、 g dflibrary(dplyr) dat% 过滤器(substr(代码,3,3)=“0”)%>% 行() 做({ 新代码% 绑定行

我有一个包含多个4位代码的数据帧。根据第三个数字的值,我希望以以下方式操作数据帧:

  • 如果是第三位数字!=“0”不执行任何操作
  • 如果第三位数字==“0”,则删除此元素并用以下元素替换它xx{10-99}。其中xx是元素的首两位数字,{10-99}表示应将{xx10,xx11,xx12,…,xx99}添加到数据帧中
  • 有什么想法可以用dplyr实现吗? 提前谢谢

    e、 g

    df
    library(dplyr)
    dat%
    过滤器(substr(代码,3,3)=“0”)%>%
    行()
    做({
    新代码%
    绑定行(筛选器(dat,substr(代码,3,3)!=“0”),)
    ##tibble:5 x 2
    #身份证号码
    #    
    # 1     1 1111 
    # 2     2 2200 
    # 3     2 2201 
    # 4     2 2202 
    # 5     2 2203 
    

    我从00到03,你可以填到你想要的任何地方。

    使用
    tidyr::uncount的另一种方法

    df%uncount(ifelse(substr(id,3,3)='0',90,1))%>%
    分组依据(id)%>%
    突变(id=ifelse)(substr(id,3,3)='0',
    粘贴0(子字符串(id,1,2),行号()+9),
    id))%>%
    解组
    #>#A tibble:183 x 1
    #>身份证
    #>    
    #>  1 1111 
    #>  2 1231 
    #>  3 1010 
    #>  4 1011 
    #>  5 1012 
    #>  6 1013 
    #>  7 1014 
    #>  8 1015 
    #>  9 1016 
    #> 10 1017 
    #>#…还有173行
    

    由(v2.0.0)于2021-05-28创建,请包含您尝试过的代码。如果您创建一个小的可复制示例以及预期输出,将更容易提供帮助。请阅读。感谢您从一些示例数据开始,DimitrisPassas。一些想法:(1)
    print(df)
    是无关的,没有它的输出,即使这样,我也不认为它增加了什么(因为
    df
    是不言而喻的);(2)你修复了它,但请不要在原始数据中添加高光,这会破坏我们正在寻找的模式。也就是说,
    10**00**
    击败了“第三个字符”比较,并要求我们手动编辑示例数据。修复程序更有用。输出具有提示性,并且足够清晰,通常“预期输出”位于正确的R
    类中,例如截断的帧。Thx!