0

I've got a time dependent data from animal recording. My data has two groups (TR and UT) each group has 20 replicate. Tiempo (time) variable goes from 282 sec to 318 sec. I have a turning point at 300 sec in which I turn on a light stimulus. I register response that I convert into an numeric integer value.

A data subset looks like this

> dput(sub)
structure(list(tiempo = c(282, 282.2, 282.4, 282.6, 282.8, 283, 
283.2, 283.4, 283.6, 283.8, 284, 284.2, 284.4, 284.6, 284.8, 
285, 285.2, 285.4, 285.6, 285.8, 286, 286.2, 286.4, 286.6, 286.8, 
287, 287.2, 287.4, 287.6, 287.8, 288, 288.2, 288.4, 288.6, 288.8, 
289, 289.2, 289.4, 289.6, 289.8, 290, 290.2, 290.4, 290.6, 290.8, 
291, 291.2, 291.4, 291.6, 291.8, 292, 292.2, 292.4, 292.6, 292.8, 
293, 293.2, 293.4, 293.6, 293.8, 294, 294.2, 294.4, 294.6, 294.8, 
295, 295.2, 295.4, 295.6, 295.8, 296, 296.2, 296.4, 296.6, 296.8, 
297, 297.2, 297.4, 297.6, 297.8, 298, 298.2, 298.4, 298.6, 298.8, 
299, 299.2, 299.4, 299.6, 299.8, 300, 300.2, 300.4, 300.6, 300.8, 
301, 301.2, 301.4, 301.6, 301.8, 302, 302.2, 302.4, 302.6, 302.8, 
303, 303.2, 303.4, 303.6, 303.8, 304, 304.2, 304.4, 304.6, 304.8, 
305, 305.2, 305.4, 305.6, 305.8, 306, 306.2, 306.4, 306.6, 306.8, 
307, 307.2, 307.4, 307.6, 307.8, 308, 308.2, 308.4, 308.6, 308.8, 
309, 309.2, 309.4, 309.6, 309.8, 310, 310.2, 310.4, 310.6, 310.8, 
311, 311.2, 311.4, 311.6, 311.8, 312, 312.2, 312.4, 312.6, 312.8, 
313, 313.2, 313.4, 313.6, 313.8, 314, 314.2, 314.4, 314.6, 314.8, 
315, 315.2, 315.4, 315.6, 315.8, 316, 316.2, 316.4, 316.6, 316.8, 
317, 317.2, 317.4, 317.6, 317.8, 318), TR2x45.1 = c(0L, 0L, 0L, 
0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L), TR2x45.10 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 0L, 1L, 2L, 1L, 0L), TR2x45.11 = c(0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L), TR2x45.12 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), TR2x45.8 = c(0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L), TR2x45.9 = c(0L, 4L, 4L, 4L, 3L, 0L, 4L, 3L, 
5L, 3L, 4L, 5L, 4L, 4L, 3L, 3L, 3L, 5L, 4L, 4L, 3L, 4L, 5L, 4L, 
2L, 5L, 3L, 5L, 4L, 5L, 3L, 4L, 4L, 4L, 3L, 5L, 3L, 5L, 4L, 4L, 
3L, 3L, 6L, 4L, 4L, 2L, 3L, 4L, 2L, 4L, 5L, 4L, 3L, 5L, 3L, 3L, 
4L, 4L, 4L, 3L, 3L, 4L, 3L, 3L, 3L, 3L, 5L, 4L, 4L, 3L, 3L, 2L, 
4L, 3L, 4L, 3L, 4L, 4L, 3L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 0L, 2L, 
2L, 4L, 4L, 3L, 3L, 11L, 3L, 3L, 4L, 3L, 1L, 4L, 3L, 2L, 2L, 
2L, 2L, 1L, 1L, 1L, 0L, 1L, 2L, 3L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 
2L, 1L, 7L, 2L, 5L, 1L, 2L, 2L, 1L, 1L, 1L, 0L, 0L, 2L, 4L, 5L, 
1L, 0L, 1L, 1L, 1L, 3L, 1L, 1L, 0L, 0L, 4L, 2L, 2L, 3L, 1L, 1L, 
0L, 1L, 1L, 2L, 3L, 2L, 3L, 3L, 2L, 0L, 0L, 1L, 1L, 1L, 3L, 2L, 
4L, 1L, 1L, 1L, 2L, 2L, 3L, 1L, 1L, 1L, 0L, 1L, 1L, 1L), UT2x45.1 = c(0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L), UT2x45.10 = c(0L, 6L, 4L, 2L, 3L, 3L, 6L, 6L, 
3L, 4L, 7L, 4L, 2L, 3L, 4L, 7L, 5L, 3L, 6L, 4L, 6L, 4L, 5L, 5L, 
3L, 8L, 5L, 3L, 11L, 3L, 4L, 6L, 8L, 4L, 9L, 3L, 4L, 3L, 3L, 
5L, 7L, 3L, 2L, 4L, 4L, 3L, 2L, 5L, 8L, 10L, 6L, 4L, 8L, 6L, 
0L, 5L, 8L, 9L, 2L, 9L, 9L, 0L, 2L, 3L, 5L, 9L, 5L, 5L, 5L, 3L, 
4L, 2L, 1L, 5L, 7L, 3L, 5L, 7L, 5L, 1L, 2L, 3L, 5L, 7L, 2L, 5L, 
5L, 5L, 5L, 2L, 2L, 4L, 6L, 5L, 4L, 2L, 3L, 4L, 5L, 2L, 2L, 1L, 
1L, 1L, 2L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 1L, 3L, 2L, 3L, 1L, 1L, 
2L, 4L, 4L, 4L, 2L, 4L, 4L, 4L, 2L, 2L, 2L, 1L, 2L, 2L, 1L, 2L, 
3L, 3L, 3L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 1L, 2L, 4L, 3L, 1L, 
2L, 2L, 1L, 2L, 2L, 2L, 4L, 2L, 3L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 
1L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), 
    UT2x45.11 = c(0L, 0L, 1L, 0L, 1L, 2L, 0L, 0L, 0L, 1L, 2L, 
    0L, 1L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 
    0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L), UT2x45.12 = c(0L, 1L, 0L, 0L, 1L, 0L, 
    0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 
    0L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 
    0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 
    1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("tiempo", 
"TR2x45.1", "TR2x45.10", "TR2x45.11", "TR2x45.12", "TR2x45.8", 
"TR2x45.9", "UT2x45.1", "UT2x45.10", "UT2x45.11", "UT2x45.12"
), row.names = c(NA, -181L), class = "data.frame")

My goal is to analyze the frequency of response before and after the light (I could define two 18-sec or four 9-sec intervals). I was thinking in analyze how many times I have response=1, response=2 and so on, for each animal within both groups for each time interval. I also would need to plot the data but I can try to fix that by myself once I get the frequency/correctly melted data.

Here's an easy example (first column vs t)

> grep(pattern = "1",x = TR)
[1]  7 11
> tiempo[grep(pattern= "1",x=TR)]
[1] 283.2 284.0

So I should get an "event of 1" in time 283.2 and another "event of 1" in 284.

When I ask the same for TR number 3

> tiempo[grep(pattern= "1",x=TR3)]

[1] 291

I should get an "event of 1" in time 291.

If two animals from the same group have a coincidence in time and event that should be added. 1 "event of 1" + 1 "event of 1" = 2 "event of 1". And that's the frequency that I want to get for every animal, collapsed later into group for each time point.

UPDATE

I have managed to write down some functions that get me the position of the response value I'm looking for (num) in data frame dat and give me the times (in a list that I should use someway to collapse within groups)

grep.fun<-function(num,dat){
li<-list(apply(dat,2,function(dat) grep(num,dat)))

return(li)
}


find.tempo<-function(num,dat){
j<-1
LIS<-list()
for (i in grep.fun(num,dat)[[1]]) {
  LIS[j]<-list(dat$t[c(i)])
if (j>=length(dat)) break else
j<-j+1

}
return(LIS)
}

contar<-function(num,dat){
  tabla<-data.frame(
    variable=names(dat),freq=as.numeric(summary(find.tempo(num,dat))[,1])) # first column of summary is freq

  return(tabla)
  }

Besides, I need to collapse response (as a function of time) values within the groups for frequency analysis.

Matias Andina
  • 4,029
  • 4
  • 26
  • 58
  • If you don't know how to properly analyze your data, then that's a statistical question, not a programming question and should be asked on [stats.se] instead. Otherwise edit your question to make it clear what difficulty you have having with code you are writing (and share that code as well). – MrFlick Apr 17 '15 at 20:56
  • It's not a statistical question, it's a programming one. I know want I want but I don't know how to write it. That's why I don't have code or I just have bunchs of things that make sense for vectors but I should need to apply to the data frame and construct a new data frame with specific data. I will try to make it more clear – Matias Andina Apr 17 '15 at 21:02

1 Answers1

0

I have managed to write a group of functions that do what I want. I had to split my data set into both groups to feed the dat parameter but it's good enough.

The code is this.

grep.fun<-function(num,dat){
li<-list(apply(dat,2,function(dat) grep(num,dat)))
return(li)
}


find.tempo<-function(num,dat){
j<-1
LIS<-list()
for (i in grep.fun(num,dat)[[1]]) {
  LIS[j]<-list(dat$t[c(i)])
if (j>=length(dat)) break else
j<-j+1

}
return(LIS)
}

contar.tempo<-function(num,dat){
  df<-data.frame(rep(NA,length(dat$tiempo)),rep(NA,length(dat$tiempo)))
  i<-1 
  for (time in dat$tiempo){
    cuenta<-sum(as.numeric(grepl(pattern=time,find.tempo(num,dat))))
    df[i,]<-c(time,cuenta)
    if (i>=length(dat$tiempo)) break else
      i<-i+1
    }
  names(df)<-c("tiempo","cuenta")
return(df)
}

contar.freq<-function(num,dat){
  tabla<-data.frame(
    variable=names(dat),freq=as.numeric(summary(find.tempo(num,dat))[,1])) # first column of summary is freq
  tabla2<-tabla[-1,] # sacar tiempo
  return(tabla2)
  }

The contar.tempo function is the one I will use to enter the level of response I want to evaluate (num) and both data sets for trained and control animals. The result is a data frame with the number of times an animal had an event of certain magnitude. (e.g, df<-contar.tempo(1,your_data))

The contar.freq function can be used to count the number of events of certain response level for a each animal.

Matias Andina
  • 4,029
  • 4
  • 26
  • 58