如何在R中使用dplyr生成以当前行为条件的多行?
我有一个包含多个4位代码的数据帧。根据第三个数字的值,我希望以以下方式操作数据帧:如何在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”)%>% 行() 做({ 新代码% 绑定行
dflibrary(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!