をここは、各(subID, location)
のtimefit
からdata.frame
を含むリスト列を生成します。これらのデータフレームは、列としてtimefit
の結果からmu
、sigma
、及びtau
をコードします。次に、unnest
を使用してこのリスト列をネスト解除して、必要な結果を生成します。我々はtimefit
クラスから"par"
属性を抽出してmu
、sigma
、およびtau
の列を形成するためにt
でそれを転置
library(retimes)
library(dplyr)
library(tidyr)
result <- data %>% group_by(subID, location) %>%
summarise(timefit_out = list(data.frame(t(attr(timefit(RT),"par"))))) %>%
unnest()
注意。ここで
は、我々はあなたの入力data
が列subID
、location
とのデータフレーム、およびtimefit
に入力され、反応時間RT
の数値列であることを前提としています。この例ではRT
の値はrunif
はそれらが0
と1
の間で使用して生成される
data <- structure(list(subID = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L),
location = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L),
RT = c(0.341764254728332, 0.775535081513226, 0.281827432336286,
0.23970171622932, 0.00226009078323841, 0.385179498931393,
0.645917195128277, 0.812101020244882, 0.183301427634433,
0.981765420176089, 0.656369511503726, 0.824469136772677,
0.923240559641272, 0.598261737963185, 0.309975759591907,
0.778991278028116, 0.757012664806098, 0.869985132943839,
0.439378245733678, 0.8420404586941, 0.643788777757436, 0.381316626211628,
0.123881611274555, 0.540528740268201, 0.661961955949664,
0.0592848095111549, 0.904047027230263, 0.190083365887403,
0.963809312786907, 0.0925120878964663, 0.117538752267137,
0.451085010776296, 0.703220259631053, 0.378451474476606,
0.305718191433698, 0.70383172808215, 0.699415655340999, 0.740436099236831,
0.429179352009669, 0.205358384409919)), .Names = c("subID",
"location", "RT"), row.names = c(NA, 40L), class = "data.frame")
## subID location RT
##1 1 0 0.341764255
##2 1 0 0.775535082
##3 1 0 0.281827432
##4 1 0 0.239701716
##5 1 0 0.002260091
##6 1 0 0.385179499
##7 1 0 0.645917195
##8 1 0 0.812101020
##9 1 0 0.183301428
##10 1 0 0.981765420
##11 1 1 0.656369512
##12 1 1 0.824469137
##13 1 1 0.923240560
##14 1 1 0.598261738
##15 1 1 0.309975760
##16 1 1 0.778991278
##17 1 1 0.757012665
##18 1 1 0.869985133
##19 1 1 0.439378246
##20 1 1 0.842040459
##21 2 0 0.643788778
##22 2 0 0.381316626
##23 2 0 0.123881611
##24 2 0 0.540528740
##25 2 0 0.661961956
##26 2 0 0.059284810
##27 2 0 0.904047027
##28 2 0 0.190083366
##29 2 0 0.963809313
##30 2 0 0.092512088
##31 2 1 0.117538752
##32 2 1 0.451085011
##33 2 1 0.703220260
##34 2 1 0.378451474
##35 2 1 0.305718191
##36 2 1 0.703831728
##37 2 1 0.699415655
##38 2 1 0.740436099
##39 2 1 0.429179352
##40 2 1 0.205358384
:そのようなデータセットのシミュレートされた例は次式で与えられます。あなたの価値観は大きく異なりますが、ここでは重要ではありません。このデータを使用して
は、我々が得る:
print(result)
##Source: local data frame [4 x 5]
##Groups: subID [2]
##
## subID location mu sigma tau
## <int> <int> <dbl> <dbl> <dbl>
##1 1 0 0.5275058 0.2553621 0.007086207
##2 1 1 0.2609386 0.1583494 0.085449559
##3 2 0 0.5205647 0.1994942 0.027329115
##4 2 1 0.4632886 0.2881343 0.008026460
グレート、ありがとうございました。また、要約が私のためにマスクされている(正確にはわからない)が、dplyr :: summarizeを指定しなかった場合は、全体の行のみが返されたことを追加したかった。 – Mik
@MikaelRubin:あなたはddply' 'で作業して述べたように理由plyr''のものであってもよいです。 'plyr'と' dplyr'の両方を 'デタッチ 'して' dplyr'をロードすることができます。両方のパッケージが必要な場合は、まず 'plyr'をロードしてから' dplyr'をロードしてください。 – aichao