gpt4 book ai didi

r - 从 real() 对象中减去最后 N 个值

转载 作者:行者123 更新时间:2023-12-05 00:31:11 26 4
gpt4 key购买 nike

以下函数用于为以下数据集创建路径概览:

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)

——
library(plyr)

foo <- function(x){
r <- rle(as.character(x))
short <- paste0(r$values, collapse="_")
long <- paste0(r$values, "(", r$lengths, ")", collapse="_")
data.frame(short, long)
}

ddply(paths, .(path), function(x)foo(x$touchpoint))

path short long
1 abc A_B_C A(2)_B(1)_C(1)
2 def A_B_D_C_D A(1)_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)

因此,此函数创建了两种形式的“路径”:
  • Short 提供每条路径从最近到最近的接触点序列。
  • Long 提供从最近到最近的每个路径的接触点序列,包括涉及接触点的次数。

  • 由于某些路径的接触点数量可能非常大,因此我想合并以下约束:仅选择 n来自 short 的最新值和 long .由于路径是从 rle() 构建的对象,我的问题是:

    我怎样才能得到 N rle() 对象中的值及其对应的长度?由于路径是从最近的接触点保存到最近的接触点,最后 N需要选择值和相应的长度。 rle()文档没有为这个问题提供解决方案。

    如果 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)

    最佳答案

    仅取 r$values 中的最后 N 个值和 r$lengths :

    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)

    编辑:编辑函数以获取最后 N 个值,而不是第一个。

    关于r - 从 real() 对象中减去最后 N 个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15336941/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com