У меня есть следующий фрейм данных (это только заголовок фрейма данных). Столбец ID является предметом (у меня больше предметов во фрейме данных, а не только предмет №99). Я хочу рассчитать среднее значение rt по предмету и условию только для наблюдений, у которых z.score (в абсолютных значениях) меньше 1.
> b
subject rt ac condition z.score
1 99 1253 1 200_9 1.20862682
2 99 1895 1 102_2 2.95813507
3 99 1049 1 68_1 1.16862102
4 99 1732 1 68_9 2.94415384
5 99 765 1 34_9 -0.63991180
7 99 1016 1 68_2 -0.03191493
Я знаю, что могу сделать это с помощью tapply или dcast (из reshape2) после подмножества данных:
b1 ‹- подмножество (b, abs (z.score)‹ 1)
b2 ‹- dcast (b1, субъект ~ условие, среднее, значение. var = rt)
subject 34_1 34_2 34_9 68_1 68_2 68_9 102_1 102_2 102_9 200_1 200_2 200_9
1 99 1028.5714 957.5385 861.6818 837.0000 969.7222 856.4000 912.5556 977.7273 858.7800 1006.0000 1015.3684 913.2449
2 5203 957.8889 815.2500 845.7750 933.0000 893.0000 883.0435 926.0000 879.2778 813.7308 804.2857 803.8125 843.7200
3 5205 1456.3333 1008.4286 850.7170 1142.4444 910.4706 998.4667 935.2500 980.9167 897.4681 1040.8000 838.7917 819.9710
4 5306 1022.2000 940.5882 904.6562 1525.0000 1216.0000 929.5167 955.8571 981.7500 902.8913 997.6000 924.6818 883.4583
5 5307 1396.1250 1217.1111 1044.4038 1055.5000 1115.6000 980.5833 1003.5714 1482.8571 941.4490 1091.5556 1125.2143 989.4918
6 5308 659.8571 904.2857 966.7755 960.9091 1048.6000 904.5082 836.2000 1753.6667 926.0400 870.2222 1066.6667 930.7500
В приведенном выше примере для b1 у каждого из испытуемых были наблюдения, которые соответствовали требованиям подмножества. Однако может случиться так, что по определенному предмету у меня не будет наблюдений после того, как я подгруппу. В этом случае я хочу получить NA в b2 для этого субъекта в конкретном состоянии, в котором у него нет наблюдений, соответствующих требованиям подмножества. У кого-нибудь есть идея, как это сделать? Любая помощь будет оценена.
Бест, Аяла
dput
, чтобы мы могли видеть точную структуру вашего кода. - person JasonAizkalns   schedule 26.11.2014data.frame
b1
, поэтому можете ли вы показать нам, в каких столбцах нет наблюдений и какое значение указывает на отсутствие наблюдений? В качестве простого примера, если быb1$ac !=1
означает отсутствие наблюдения, вы могли бы сделатьb1$subject[which(b1$ac!=1)] <- NA
. - person Carl Witthoft   schedule 26.11.2014subject
является множителем, а не целым числом, вы можете использовать аргументdrop
вdcast
, чтобы сохранить отсутствующие комбинации в выходном наборе данных. По умолчанию они отброшены, поэтому используйтеdrop = FALSE
. Вы получитеNaN
заполнение всех пропущенных значений (см. Аргументfill
). Если вы действительно хотитеNA
, вы можете использовать что-то вродеfill = as.numeric(NA)
. - person aosmith   schedule 26.11.2014