Я пытаюсь автоматизировать некоторые преобразования данных, которые мне обычно приходится выполнять вручную, и не могу найти способ условно использовать значения из одного фрейма данных для присвоения значений списку фреймов данных. Скорее всего, мне понадобится помощь, чтобы прояснить вопрос, поскольку это сложная проблема.
Изменить: У меня есть список фреймов данных и один фрейм данных.
I Я пытаюсь использовать значения START и STOP из второго фрейма данных, чтобы заполнить столбец заголовка списка фреймов данных, так что, когда значение coords для каждого фрейма данных в списке находится между значениями START и STOP второй df, для строки имени файла, которая соответствует имени df в списке, столбец заголовка будет содержать значение из столбца Behavior второго df.
список фреймов данных:
x <- structure(list(coords = floor(runif(10, min=1, max=40000)), theta = structure(c(13.8547966870419,
14.8993688012215, 15.410646113828, 15.6703175237307, 14.5498945559588,
14.8328448615362, 11.9767208496214, 13.4072260529856, 13.9396600622978,
15.0786802028324), .Dim = c(10L, 1L), .Dimnames = list(NULL,
NULL)), heading = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA
)), row.names = c("1", "2", "3", "4", "5", "6", "7", "8", "9",
"10"), class = "data.frame")
y <- structure(list(coords = floor(runif(10, min=1, max=40000)), theta = structure(c(81.0558787122676,
80.2691170551245, 79.7678190293645, 79.9335529048482, 80.8203989004178,
80.5388456375162, 80.6148099805207, 80.9577690561259, 81.9290502290329,
81.955111593859), .Dim = c(10L, 1L), .Dimnames = list(NULL, NULL)),
heading = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c("1",
"2", "3", "4", "5", "6", "7", "8", "9", "10"), class = "data.frame")
list1 <- list(x,y)
names(list1)<-c("K8121319_feed3_01","K8121319_feed3_02")
одиночный фрейм данных:
structure(list(X = 1:20, File = c("K8121319_feed3_01", "K8121319_feed3_01",
"K8121319_feed3_01", "K8121319_feed3_01", "K8121319_feed3_01",
"K8121319_feed3_02", "K8121319_feed3_02", "K8121319_feed3_02",
"K8121319_feed3_02", "K8121319_feed3_02", "K8121319_feed3_02",
"K8121319_feed3_02", "K8121319_feed3_03", "K8121319_feed3_03",
"K8121319_feed3_03", "K8121319_feed3_03", "K8121319_feed3_03",
"K8121319_feed3_03", "K8121319_feed3_03", "K8121319_feed3_03"
), Behavior = c("Approach", "OutofFrame", "Approach", "Avoid",
"Explore", "Approach", "Avoid", "Approach", "Avoid", "Approach",
"OutofFrame", "Approach", "Avoid", "Explore", "Approach", "Avoid",
"Approach", "Avoid", "Approach", "Avoid"), id = c(1L, 2L, 3L,
4L, 5L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 1L, 2L, 3L, 4L, 5L, 6L, 7L,
8L), START = c(0, 23554.2374, 26476.1594, 27898.7844, 30744.0344,
0, 1788.0749, 3989.3999, 17529.5553, 21696.3191, 26503.1743,
27836.4285, 0, 4472.4934, 27347.0455, 41267.0268, 42172.5351,
42471.8554, 43926.1675, 44301.1415), STOP = c(23554.1775, 25517.5797,
27898.7245, 30743.9745, 44719.9623, 1788.015, 3989.34, 17529.4954,
21696.2592, 26503.1144, 27836.3686, 44297.3079, 4472.4335, 27346.9856,
41266.9669, 42172.4752, 42471.7955, 43926.1076, 44301.0816, 45116.0211
), duration = c(393.225, 32.777, 23.749, 47.499, 233.321, 29.85,
36.749, 226.045, 69.561, 80.247, 22.257, 274.806, 74.665, 381.878,
232.386, 15.116, 4.99599999999998, 24.2779999999999, 6.2589999999999,
13.6039999999999)), row.names = c(NA, 20L), class = "data.frame")
Исходный вопрос / данные
По сути, у меня есть список фреймов данных, которые все имеют эту общую структуру: (dput результаты для одного df внизу)
$K8121319_feed3_01
coords x.h y.h likelihood.h x.MB y.MB likelihood.MB
1 0 504.3287 877.9026 0.9947414 490.1283 901.2057 0.9918574
2 1 505.9821 878.5404 0.9952422 491.2240 901.8298 0.9882244
3 2 505.7802 878.6948 0.9960060 490.9815 901.6725 0.9895840
4 3 506.5887 878.4921 0.9932485 491.3726 901.6714 0.9887711
5 4 505.5834 878.0211 0.9945126 490.8402 901.3011 0.9904280
6 5 505.3733 878.2440 0.9956381 490.7085 901.2917 0.9911127
x.t y.t likelihood.t x.p y.p likelihood.p x.a
1 450.5128 957.8469 0.9986305 507.6661 862.6042 0.3731771 549.7861
2 451.6438 957.8253 0.9989508 507.8567 862.8673 0.4277135 550.9062
3 451.6186 958.0657 0.9989144 508.0289 862.9623 0.4955292 550.1566
4 451.9846 958.0376 0.9989387 508.5574 862.9042 0.5333622 550.7906
5 451.4842 957.7491 0.9987649 507.8273 862.8090 0.4536394 550.8159
6 451.3544 957.9151 0.9988230 507.0331 862.9991 0.4806216 550.0393
y.a likelihood.a x.m y.m likelihood.m theta heading
1 712.0231 0.9649664 618.3212 623.8601 0.3472545 13.85480 NA
2 712.1076 0.9549243 619.7942 624.1536 0.3459687 14.89937 NA
3 712.5276 0.9648149 619.7963 626.1128 0.3519055 15.41065 NA
4 714.5052 0.9606929 620.4413 626.5804 0.4425002 15.67032 NA
5 714.4543 0.9589433 620.6282 627.1456 0.4323518 14.54989 NA
6 714.6501 0.9615864 620.0085 626.9384 0.6067145 14.83284 NA
$K8121319_feed3_02
coords x.h y.h likelihood.h x.MB y.MB likelihood.MB
1 0 492.6928 995.6010 0.9988985 500.8221 1028.505 0.9978373
2 1 492.8400 995.0040 0.9989992 500.4374 1027.900 0.9981084
3 2 492.8416 994.4175 0.9989386 500.2200 1027.537 0.9981918
4 3 492.5573 993.6464 0.9986783 499.7028 1026.006 0.9981108
5 4 492.6018 992.7993 0.9984750 499.7470 1023.899 0.9974792
6 5 492.2953 991.8393 0.9983433 499.9571 1024.894 0.9976745
x.t y.t likelihood.t x.p y.p likelihood.p x.a
1 530.8685 1086.848 0.6761467 487.3187 976.1661 0.14095598 798.7275
2 531.3508 1086.615 0.7511309 487.6399 976.0349 0.15382832 800.8520
3 531.5408 1087.401 0.6604453 487.2163 974.9952 0.14430821 798.5768
4 530.6860 1088.123 0.6541176 487.8687 974.0737 0.15584856 798.5966
5 531.6422 1087.531 0.7950381 485.7681 972.9353 0.12393418 798.4612
6 532.8403 1087.082 0.8325000 485.4099 972.3963 0.10781968 798.8164
y.a likelihood.a x.m y.m likelihood.m theta heading
1 903.1436 0.9818143 797.3312 890.6576 0.01648542 81.05588 NA
2 902.0165 0.9836377 797.5673 890.6330 0.01425856 80.26912 NA
3 902.1720 0.9853629 797.3771 890.5745 0.01512018 79.76782 NA
4 902.0870 0.9846913 797.4385 890.6240 0.01913673 79.93355 NA
5 902.4894 0.9841179 797.4756 890.8004 0.01662260 80.82040 NA
6 901.0328 0.9826811 797.1801 890.6665 0.01670897 80.53885 NA
И так далее ... И у меня есть единственный фрейм данных, который имеет имя каждого фрейма данных в списке вместе со значениями времени для начала и конца разницы различные поведенческие состояния (dput внизу сообщения):
File Behavior id START STOP duration
1 K8121319_feed3_01 Approach 1 0.00 23554.178 393.225
2 K8121319_feed3_01 OutofFrame 2 23554.24 25517.580 32.777
3 K8121319_feed3_01 Approach 3 26476.16 27898.725 23.749
4 K8121319_feed3_01 Avoid 4 27898.78 30743.975 47.499
5 K8121319_feed3_01 Explore 5 30744.03 44719.962 233.321
6 K8121319_feed3_02 Approach 1 0.00 1788.015 29.850
Я пытаюсь использовать значения START и STOP из второго кадра данных, чтобы заполнить столбец заголовка списка кадров данных, например что когда значение coords для каждого фрейма данных в списке находится между значениями START и STOP второго df, для строки имени файла, которая соответствует имени df в списке, столбец заголовка будет содержать значение из столбца Behavior второй df.
Время начала и окончания для состояний:
structure(list(File = c("K8121319_feed3_01", "K8121319_feed3_01",
"K8121319_feed3_01", "K8121319_feed3_01", "K8121319_feed3_01",
"K8121319_feed3_02", "K8121319_feed3_02", "K8121319_feed3_02",
"K8121319_feed3_02", "K8121319_feed3_02", "K8121319_feed3_02",
"K8121319_feed3_02", "K8121319_feed3_03", "K8121319_feed3_03",
"K8121319_feed3_03", "K8121319_feed3_03", "K8121319_feed3_03",
"K8121319_feed3_03", "K8121319_feed3_03", "K8121319_feed3_03"
), Behavior = c("Approach", "OutofFrame", "Approach", "Avoid",
"Explore", "Approach", "Avoid", "Approach", "Avoid", "Approach",
"OutofFrame", "Approach", "Avoid", "Explore", "Approach", "Avoid",
"Approach", "Avoid", "Approach", "Avoid"), id = c(1L, 2L, 3L,
4L, 5L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 1L, 2L, 3L, 4L, 5L, 6L, 7L,
8L), START = c(0, 23554.2374, 26476.1594, 27898.7844, 30744.0344,
0, 1788.0749, 3989.3999, 17529.5553, 21696.3191, 26503.1743,
27836.4285, 0, 4472.4934, 27347.0455, 41267.0268, 42172.5351,
42471.8554, 43926.1675, 44301.1415), STOP = c(23554.1775, 25517.5797,
27898.7245, 30743.9745, 44719.9623, 1788.015, 3989.34, 17529.4954,
21696.2592, 26503.1144, 27836.3686, 44297.3079, 4472.4335, 27346.9856,
41266.9669, 42172.4752, 42471.7955, 43926.1076, 44301.0816, 45116.0211
), duration = c(393.225, 32.777, 23.749, 47.499, 233.321, 29.85,
36.749, 226.045, 69.561, 80.247, 22.257, 274.806, 74.665, 381.878,
232.386, 15.116, 4.99599999999998, 24.2779999999999, 6.2589999999999,
13.6039999999999)), row.names = c(NA, 20L), class = "data.frame")