从rle()对象中减去最后N个值
以下函数用于为以下数据集创建路径概览:从rle()对象中减去最后N个值,r,sequence,run-length-encoding,R,Sequence,Run Length Encoding,以下函数用于为以下数据集创建路径概览: tc <- textConnection(' path touchpoint time abc A 1 abc A 2 abc B 3 abc C 4 def A
tc <- textConnection('
path touchpoint time
abc A 1
abc A 2
abc B 3
abc C 4
def A 2
def B 3
def D 4
def C 5
def D 6
ghi A 1
ghi A 2
ghi A 3
ghi C 4
jkl A 5
jkl A 6
jkl B 7
jkl C 8
mno B 1
mno A 2
mno A 3
mno C 4
pqr A 1
pqr C 2
')
paths <- read.table(tc, header=TRUE)
仅取
r$values
和r$length
中的最后N个值:
foo <- function(x,N){
r <- rle(as.character(x))
lastN<-max(1,(length(r$lengths) - N + 1)):length(r$lengths)
short <- paste0(r$values[lastN], collapse="_")
long <- paste0(r$values[lastN], "(", r$lengths[lastN], ")", collapse="_")
data.frame(short, long)
}
ddply(paths, .(path), function(x) foo(x$touchpoint,N=2))
path short long
1 abc B_C B(1)_C(1)
2 def C_D C(1)_D(1)
3 ghi A_C A(3)_C(1)
4 jkl B_C B(1)_C(1)
5 mno A_C A(2)_C(1)
6 pqr A_C A(1)_C(1)
ddply(paths, .(path), function(x) foo(x$touchpoint,N=4))
path short long
1 abc A_B_C A(2)_B(1)_C(1)
2 def B_D_C_D B(1)_D(1)_C(1)_D(1)
3 ghi A_C A(3)_C(1)
4 jkl A_B_C A(2)_B(1)_C(1)
5 mno B_A_C B(1)_A(2)_C(1)
6 pqr A_C A(1)_C(1)
foo OP想要最后的N个值,而不是第一个N。好的,这比预期的要容易。我一直在努力从rle()
对象中获取值,但这很酷,而且工作非常完美!谢谢如果N>选定行的长度,则此操作无效。例如,如果我设置N=4,我得到:只有0可能与负下标混合
@MaxvanderHeijden好点,我编辑了函数(行lastN
path short long
1 abc B_C B(1)_C(1)
2 def C_D C(1)_D(1)
3 ghi A_C A(3)_C(1)
4 jkl B_C B(1)_C(1)
5 mno A_C A(2)_C(1)
6 pqr A_C A(1)_C(1)
foo <- function(x,N){
r <- rle(as.character(x))
lastN<-max(1,(length(r$lengths) - N + 1)):length(r$lengths)
short <- paste0(r$values[lastN], collapse="_")
long <- paste0(r$values[lastN], "(", r$lengths[lastN], ")", collapse="_")
data.frame(short, long)
}
ddply(paths, .(path), function(x) foo(x$touchpoint,N=2))
path short long
1 abc B_C B(1)_C(1)
2 def C_D C(1)_D(1)
3 ghi A_C A(3)_C(1)
4 jkl B_C B(1)_C(1)
5 mno A_C A(2)_C(1)
6 pqr A_C A(1)_C(1)
ddply(paths, .(path), function(x) foo(x$touchpoint,N=4))
path short long
1 abc A_B_C A(2)_B(1)_C(1)
2 def B_D_C_D B(1)_D(1)_C(1)_D(1)
3 ghi A_C A(3)_C(1)
4 jkl A_B_C A(2)_B(1)_C(1)
5 mno B_A_C B(1)_A(2)_C(1)
6 pqr A_C A(1)_C(1)