2014-08-29 42 views
0

我测量了40个个体中许多变量的两个重复。我的数据集以列的形式排列,每列代表一个变量。这意味着在每一栏中我都有40个人的两个重复,即80个值。额外的列是个人的身份,另一个额外的列是复制品(1或2)。在R中排列在单个列中的重复样本

我想尽可能保持这种结构,因为我需要它进行进一步的分析。

我试图做的没有成功(因此要求你的帮助)是为一组散点图(每个变量一个)与第一个个人在x轴的复制,第二个在y轴上。然后,我想用个人的ID标记点,以检测异常等...

到目前为止,我只能做到这一点(部分)通过分裂数据集在两个(每个复制),然后在两个数据集中选择相同的变量并在循环内绘制它。但它并不优雅。下面是我迄今所做的代码:

datexp=d 

datexp1=datexp[datexp$test=="mirror1",] 
datexp2=datexp[datexp$test=="mirror2",] 

datexp1=datexp1[sapply(datexp1,is.numeric)] 
datexp2=datexp2[sapply(datexp2,is.numeric)] 

cases=length(names(datexp)) 
for (i in 1:cases){ 
    x=datexp1[,i] 
    y=datexp2[,i] 
    png(paste(names(datexp)[i],".png"),width=1000, height=1000, res=150) 
    plot(x,y, pch=19, xlab="test1",ylab="test2") 
    dev.off() 
    } 

但是我会很感激这样做如上所述,斗而不破。格或ggplot都可以。另外,我还是希望以某种方式保存这些图,然后将它们全部放在同一个面板中,然后将它们保存到一个文件中(这是我对我的代码所做的)。

提前感谢您的时间。

编辑:一些可重现的数据(不知道如果直接从控制台上直接粘贴它可以......)。鱼是ID列,测试是重复的,而其他两列是两个变量。

datexp[c(17,16,20,21)] 
          test fish t_arena_m t_active_m 
379_test_mirror1.csv mirror1 379 0.057804431 0.993836415 
379_test_mirror2.csv mirror2 379 0.062271062 0.690642691 
380_test_mirror1.csv mirror1 380 0.415361546 0.918860380 
380_test_mirror2.csv mirror2 380 0.422640880 0.989496499 
381_test_mirror1.csv mirror1 381 0.017330445 0.169138477 
381_test_mirror2.csv mirror2 381 0.024966711 0.518641811 
382_test_mirror1.csv mirror1 382 0.077359120 1.000000000 
382_test_mirror2.csv mirror2 382 0.000000000 0.000000000 
383_test_mirror1.csv mirror1 383 0.057657057 0.976503916 
383_test_mirror2.csv mirror2 383 0.065101565 0.894272394 
384_test_mirror1.csv mirror1 384 0.122959014 0.999000333 
384_test_mirror2.csv mirror2 384 0.191609789 0.997336441 
386_test_mirror1.csv mirror1 386 0.095817364 0.948841860 
386_test_mirror2.csv mirror2 386 0.044122544 0.767399267 
387_test_mirror1.csv mirror1 387 0.000000000 0.007332111 
387_test_mirror2.csv mirror2 387 0.000000000 0.000000000 
388_test_mirror1.csv mirror1 388 0.030994834 0.515580737 
388_test_mirror2.csv mirror2 388 0.032989004 0.367544152 
389_test_mirror1.csv mirror1 389 0.158140310 0.943342776 
389_test_mirror2.csv mirror2 389 0.211131478 0.958340277 
390_test_mirror1.csv mirror1 390 0.357023968 1.000000000 
390_test_mirror2.csv mirror2 390 0.183766453 0.999325008 
391_test_mirror1.csv mirror1 391 0.105052526 0.661997665 
391_test_mirror2.csv mirror2 391 0.115198935 0.514066922 
392_test_mirror1.csv mirror1 392 0.031489503 0.884871709 
392_test_mirror2.csv mirror2 392 0.591636121 0.960513162 
393_test_mirror1.csv mirror1 393 0.076641120 0.631289570 
393_test_mirror2.csv mirror2 393 0.318439480 0.945815272 
394_test_mirror1.csv mirror1 394 0.000000000 0.000000000 
394_test_mirror2.csv mirror2 394 0.007671781 0.159606404 
395_test_mirror1.csv mirror1 395 0.230897286 0.991676378 
395_test_mirror2.csv mirror2 395 0.196566813 0.478290138 
396_test_mirror1.csv mirror1 396 0.123506646 0.784115766 
396_test_mirror2.csv mirror2 396 0.002415042 0.950664137 
397_test_mirror1.csv mirror1 397 0.376770538 0.808865189 
397_test_mirror2.csv mirror2 397 0.171942686 0.785571476 
398_test_mirror1.csv mirror1 398 0.000000000 0.000000000 
398_test_mirror2.csv mirror2 398 0.000000000 0.000000000 
399_test_mirror1.csv mirror1 399 0.308741789 0.548088260 
399_test_mirror2.csv mirror2 399 0.205689278 0.337316950 
400_test_mirror1.csv mirror1 400 0.149425287 0.729801766 
400_test_mirror2.csv mirror2 400 0.203966006 0.998500250 
454_test_mirror1.csv mirror1 454 0.001999667 0.916847192 
454_test_mirror2.csv mirror2 454 0.021829695 1.000000000 
456_test_mirror1.csv mirror1 456 0.272742559 0.619303851 
456_test_mirror2.csv mirror2 456 0.159980023 0.357582820 
457_test_mirror1.csv mirror1 457 0.005336001 0.207937302 
457_test_mirror2.csv mirror2 457 0.035775419 0.735706950 
458_test_mirror1.csv mirror1 458 0.003498251 0.999833417 
458_test_mirror2.csv mirror2 458 0.406870102 0.951975988 
459_test_mirror1.csv mirror1 459 0.006336502 0.021844255 
459_test_mirror2.csv mirror2 459 0.001499250 0.602032317 
460_test_mirror1.csv mirror1 460 0.274303819 0.582791396 
460_test_mirror2.csv mirror2 460 0.048475762 0.289855072 
461_test_mirror1.csv mirror1 461 0.061812729 0.106297901 
461_test_mirror2.csv mirror2 461 0.085427989 0.801630435 
462_test_mirror1.csv mirror1 462 0.032475181 0.044590274 
462_test_mirror2.csv mirror2 462 0.182928899 0.725606652 
463_test_mirror1.csv mirror1 463 0.085042521 0.423878606 
463_test_mirror2.csv mirror2 463 0.041581806 0.808723693 
464_test_mirror1.csv mirror1 464 0.234255248 0.950349883 
464_test_mirror2.csv mirror2 464 0.269121813 0.961006499 
467_test_mirror1.csv mirror1 467 0.185302450 0.905849025 
467_test_mirror2.csv mirror2 467 0.100616358 0.345327336 
468_test_mirror1.csv mirror1 468 0.000000000 0.000000000 
468_test_mirror2.csv mirror2 468 0.182939020 0.703932023 
469_test_mirror1.csv mirror1 469 0.152242788 0.983324996 
469_test_mirror2.csv mirror2 469 0.282619563 0.781036494 
471_test_mirror1.csv mirror1 471 0.000000000 0.000000000 
471_test_mirror2.csv mirror2 471 0.000000000 0.000000000 
472_test_mirror1.csv mirror1 472 0.322005664 0.699983342 
472_test_mirror2.csv mirror2 472 0.055990668 0.555407432 
473_test_mirror1.csv mirror1 473 0.222796201 0.986335611 
473_test_mirror2.csv mirror2 473 0.065134100 0.591037814 
474_test_mirror1.csv mirror1 474 0.000000000 0.000000000 
474_test_mirror2.csv mirror2 474 0.000000000 0.000000000 
475_test_mirror1.csv mirror1 475 0.050149950 0.828890370 
475_test_mirror2.csv mirror2 475 0.034155282 0.985171609 
476_test_mirror1.csv mirror1 476 0.061095389 0.723156318 
476_test_mirror2.csv mirror2 476 0.081986336 0.870188302 
477_test_mirror1.csv mirror1 477 0.111814698 0.323779370 
477_test_mirror2.csv mirror2 477 0.341109815 0.576237294 
478_test_mirror1.csv mirror1 478 0.105131623 0.923525492 
478_test_mirror2.csv mirror2 478 0.046151283 0.799400200 
479_test_mirror1.csv mirror1 479 0.000000000 0.000000000 
479_test_mirror2.csv mirror2 479 0.000000000 0.000000000 
481_test_mirror1.csv mirror1 481 0.059990002 0.939343443 
481_test_mirror2.csv mirror2 481 0.085319113 0.193301116 
c0509_test_mirror1.csv mirror1 c0509 0.000000000 0.156140643 
c0509_test_mirror2.csv mirror2 c0509 0.101149808 0.413264456 
c0695_test_mirror1.csv mirror1 c0695 0.171447632 0.982821881 
c0695_test_mirror2.csv mirror2 c0695 0.236037234 0.980718085 
xh0218_test_mirror1.csv mirror1 xh0218 0.000000000 0.000000000 
xh0218_test_mirror2.csv mirror2 xh0218 0.000000000 0.000000000 
+0

能否请您提供可重复的数据?否则,很难看出你有什么样的问题。 – jazzurro 2014-08-29 09:23:47

+0

我对提供的代码没有任何问题,它工作正常。但是我想以另一种方式来做,而不会分裂数据。我会提供可重复的数据:) – 2014-08-29 09:38:37

回答

0

这里是我猜测你正在寻找,使用随机值的样本数据帧:

require(ggplot2) 

dat = data.frame(rep(seq(1:40),each =2),rep(c(1,2),40), runif(80), runif(80)+1) 
names(dat) = c('id', 'replicate', 'var1', 'var2') 

for(i in 3:ncol(dat)){ 
    png(paste(names(dat)[i],".png"),width=1000, height=1000, res=150) 
    print(ggplot(dat, aes(dat[dat$replicate==1,i],dat[dat$replicate==2,i])) 
    + geom_point() + geom_text(aes(label=id[replicate==1]))) 
    dev.off() 
} 
+0

谢谢!我认为这完全解决了我的担忧...... – 2014-08-29 11:25:23