dplyr是否可以同时使用滞后和超前功能
我有几个*.txt文件,看起来像dplyr是否可以同时使用滞后和超前功能,r,dplyr,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)
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>
我想知道这些数据是否来自DNA序列——如果是的话,像往常一样,用每行存储的序列来处理是否比用一列存储的序列更容易。
df %>%
mutate(result11 = rollapply(BP,list(-(1:4)), paste, collapse = '', fill = NA),
result2 = rollapply(BP, list(1:2), paste, collapse = '', fill = NA))