小编hie*_*ieu的帖子

纵向序列数据的三次样条法?

我有一个格式如下的串行数据:

time    milk    Animal_ID
30      25.6    1
31      27.2    1
32      24.4    1
33      17.4    1
34      33.6    1
35      25.4    1
33      29.4    2
34      25.4    2
35      24.7    2
36      27.4    2
37      22.4    2
80      24.6    3
81      24.5    3
82      23.5    3
83      25.5    3
84      24.4    3
85      23.4    3
.   .   .
Run Code Online (Sandbox Code Playgroud)

一般来说,300只动物在短时间内的不同时间点有牛奶记录.但是,如果我们将他们的数据加在一起并且不关心不同的animal_ID,我们会在这样的牛奶〜时间之间产生一条曲线,如下图所示: 在此输入图像描述 此外,在上图中,我们有1例动物的数据,它们很短且变化很大.我的目的是平滑每个动物数据,但如果模型允许从整个数据中学习一般模式,那么它就会被包括在内.我使用了以下格式的不同平滑模型(ns,bs,smooth.spline)但它只是不起作用:

mod <- lme(milk ~ bs(time, df=3), data=dat, random = ~1|Animal_ID)
Run Code Online (Sandbox Code Playgroud)

我希望如果有人已经处理过这个问题会给我一个建议.谢谢完整的数据集可以从这里访问:https: //www.dropbox.com/s/z9b5teh3su87uu7/dat.txt?dl=0

regression r spline bspline mixed-models

7
推荐指数
1
解决办法
1626
查看次数

取两列之间的差异

我有两个数据:list包含271个值,listfull包含355个值(其中271个与列表中的相同).我想要的是在这两个文件中打印出84个不同的值.当我编写代码以打印"相同"值时,它们可以工作,但不适用于"不同情况".我试图找出原因,但不能.你可以帮我解决这个问题.谢谢

list<-read.table("C:\\Data\\list.txt", header=T)
listfull<-read.table("C:\\Data\\listfull.txt", header=T)



for (i in 1:271)
{
  for (j in 1:355)
  {
    if(list$Cow_ID[i]==listfull$Cow_ID[j])
    bo<-data.frame(listfull[j,])

   }
    write.table(bo,"C:\\Data\\store.txt",row.names = FALSE, dec = ".", na = "NA", sep = " ", append = TRUE, col.names = FALSE)
}
Run Code Online (Sandbox Code Playgroud)

//以上代码有效!

//但不是以下内容:

for (i in 1:355)
{
for (j in 1:271)
{
if(listfull$Cow_ID[i]!=listfull$Cow_ID[j])
  bo<-data.frame(listfull[i,])

  }

  write.table(bo,"C:\\Data\\store.txt",row.names = FALSE, dec = ".", na = "NA", sep = " ", append = TRUE, col.names = FALSE)
}
Run Code Online (Sandbox Code Playgroud)

这里list和listfull的样子如下:

Lisfull List
Cow_ID  Cow_ID
26       26 …
Run Code Online (Sandbox Code Playgroud)

r subset

0
推荐指数
1
解决办法
1469
查看次数

标签 统计

r ×2

bspline ×1

mixed-models ×1

regression ×1

spline ×1

subset ×1