r - 无论如何可以从 dplyr 一起使用滞后和领先功能
问题描述
我有几个 *.txt 文件看起来像
ID BP
Id1 A
Id2 A
Id3 T
Id4 C
Id5 A
Id6 T
Id7 A
Id8 T
我想要每个 ID 的前 4 个 BP 字符和接下来的 2 个 BP 字符
就像是:
Id5 A CTAA TA
Id6 T TACT AT
我试图通过使用dplyr 中的lag
和lead
函数来实现这一点,但无法按预期获得输出。
解决方案
lead
如果您的窗口大小增加/减少,lag
您可以使用滚动操作来轻松调整,而不是使用。
library(dplyr)
library(zoo)
df %>%
mutate(result1 = lag(rollapplyr(BP, 4, function(x)
paste0(rev(x), collapse = ''), fill = NA)),
result2 = rollapply(BP, 2, align = 'left', function(x)
paste0(rev(x), collapse = ''), fill = NA))
# ID BP result1 result2
#1 Id1 A <NA> AA
#2 Id2 A <NA> TA
#3 Id3 T <NA> CT
#4 Id4 C <NA> AC
#5 Id5 A CTAA TA
#6 Id6 T ACTA AT
#7 Id7 A TACT TA
#8 Id8 T ATAC <NA>
@G 的建议。rev
格洛腾迪克用and避免了上述的怪异方式lag
。
df %>%
mutate(result11 = rollapply(BP,list(-(1:4)), paste, collapse = '', fill = NA),
result2 = rollapply(BP, list(1:2), paste, collapse = '', fill = NA))
推荐阅读
- javascript - 标题关键字搜索
- php - 从 MySQL 控制台登录时,MSQL 密码有效,但尝试从 PHP 代码连接数据库时,相同的密码无效
- java - Spring webclient抛出块不支持异常
- html - 在角度 7 中动态更改滚动条颜色
- firebase - 如何在 Firebase Analytics 中使用默认用户属性
- php - 在工厂模式php中处理动态类名
- html - Angular:尝试禁用按钮时出现 ExpressionChangedAfterItHasBeenCheckedError
- javascript - 如何在不将其附加到 DOM 的情况下使用 javascript
- r - r - 通过自举/重采样生成负二项分布
- php - 当我在 div 标签中回显会话变量(包含图像路径)时,它没有显示所有图像