r - 如何使用 seqtime 在 R 中的组内插入数据?

标签 r time-series interpolation

我正在尝试使用 seqtime ( https://github.com/hallucigenia-sparsa/seqtime ) 来分析时间序列微生物组数据,如下所示:

meta = data.table::data.table(day=rep(c(15:27),each=3), condition =c("a","b","c"))
meta<- meta[order(meta$day, meta$condition),]
meta.ts<-as.data.frame(t(meta))
otu=matrix(1:390, ncol = 39)
oturar<-rarefyFilter(otu, min=0)
rarotu<-oturar$rar
time<-meta.ts[1,]

interp.otu<-interpolate(rarotu, time.vector = time, 
                      method = "stineman", groups = meta$condition)

插值返回以下错误:

[1] "Processing group a"
[1] "Number of members 13"
intervals
 0 
12 
[1] "Selected interval: 1"
[1] "Length of time series: 13"
[1] "Length of time series after interpolation: 1"
Error in stinepack::stinterp(time.vector, as.numeric(x[i, ]), xout = xout,  : 
  The values of x must strictly increasing

我试图将方法更改为“hyman”,但它返回以下错误:

  Error in interpolateSub(x = x, time.vector = time.vector, method = method) : 
      Time points must be provided in chronological order.

我正在使用 R 版本 3.6.1,我对 R 有点陌生。

谁能告诉我我做错了什么/如何解决这些错误? 非常感谢!

最佳答案

我花了很多时间摸索着想弄明白这个问题。这一切都归结为 meta 的数据结构和用作 time.vector 参数输入的结果时间变量。

meta.ts 被转换为数据框时,所有字符串都会自动转换为因子 - 这包括 day

要进行调整,您可以将代码编辑为以下内容:

library(seqtime)

meta <- data.table::data.table(day=rep(c(15:27),each=3), condition =c("a","b","c"))
meta <- meta[order(meta$day, meta$condition),]
meta.ts <- as.data.frame(t(meta), stringsAsFactors = FALSE) # Set stringsAsFactors = FALSE
otu <- matrix(1:390, ncol = 39)
oturar <- rarefyFilter(otu, min=0)
rarotu <- oturar$rar
time <- as.integer(meta.ts[1,]) # Now 'day' is character, so convert to integer

interp.otu <- interpolate(rarotu, time.vector = time, 
                        method = "stineman", groups = meta$condition)

作为奖励,请阅读 this有关 stringsAsFactors 参数的信息的博文。字符串自动转换为因子是一种常见的困惑。

关于r - 如何使用 seqtime 在 R 中的组内插入数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58927502/

相关文章:

r - ggplot2:删除一些图例标题

python - 如何从 pyplot 中不规则的 xyz 数据创建热图?

c - 两点之间的插值,我错过了什么吗?

R ecdf 折线图上的高亮点

r - 从.libPaths()中永久删除一个库,而无需使用Rprofile.site

r - dplyr无需对变量名进行硬编码

python - Pandas Dataframe 中的高级间隔切片

Python - 在图中寻找模式

R:每个 ID 自上次事件以来的天数

python - Python 中的 interp2d 函数运行时错误