【发布时间】:2021-05-28 12:24:47
【问题描述】:
我有一个包含多个 4 位代码的数据框。根据第三位数字的值,我想通过以下方式操作数据框:
- 如果第 3 位 != "0" 什么都不做
- 如果第 3 位 == “0”,则消除此元素并将其替换为以下一个 xx{10-99}。其中 xx 是元素的前两位初始数字,{10-99} 表示应将 {xx10,xx11,xx12,...,xx99} 添加到数据框中。
有什么想法可以用 dplyr 来实现吗? 提前致谢!
例如
df <- data.frame("id"= c("1111","1231","1000","2222","2900")
df
我想将 df 转换为以下 df
{"1111","1231","1010","1011",...,"1099","2222","2910","2911",..."2999"}
【问题讨论】:
-
请附上您尝试过的代码。如果您创建一个小的可重现示例以及预期的输出,这将更容易提供帮助。阅读how to give a reproducible example。
-
感谢 DimitrisPassas 从一些示例数据开始。一些想法:(1)
print(df)没有它的输出是无关紧要的,即使这样我也不认为它增加了任何东西(因为df确实是不言而喻的); (2) 你修复了它,但请不要在原始数据中添加高亮,这会破坏我们正在寻找的模式。也就是说,"10**00**"击败了“第三个字符”比较,并要求我们手动编辑样本数据。该修复程序更有用。输出是暗示性的并且足够清晰,通常“预期输出”在正确的 Rclass中,例如截断的帧。谢谢!