2つの異なるグループの2つの測定値を持つデータがあり、それぞれのサンプル数があります。 6つのサンプルと私の単純なバージョンは、それぞれ次のようになります。map()を使用してデータフレームの列にグループ化インデックスを追加するにはどうすればよいですか?
library(tidyverse)
df <- tibble(group = c(rep("group_A", 12), rep("group_B", 12)),
sample = rep(1:6, 4),
measurement = rep(c(rep("meas_A", 6), rep("meas_B", 6)), 2),
value = round(runif(24, min = 0, max = 60)))
が、測定は異なる条件で繰り返されてきたので、それは実際には、リストで表現類似したデータフレームのシリーズです。最終的に
df2 <- bind_rows(df,df,df,df) %>%
mutate(condition = c(rep("One", 24), rep("Two", 24),
rep("Three", 24), rep("Four", 24))) %>%
unite(group_meas, group, measurement) %>%
nest(-condition)
私は、各データフレームをワイドフォーマットに再形成して、統計的比較のために各グループの2つの測定値のベクトルを単一の列から簡単に抽出できるようにしたいと考えています。私の問題は、サンプルを一度、その後spread()
以上に測定されているときがあるので動作しませんが生じ
df2 %>% mutate(data = map(data, ~spread(.x, group_meas, value)))
:たとえば、次のようにのようなリストを下にマッピングすることができ
df %>% unite(group_meas, group, measurement)
%>% spread(group_meas, value)
Duplicate identifiers for rows
これを回避する最も良い方法は、結合されたグループ/ measurにグループ化された新しいインデックス列を追加することです固有の行識別子を提供します。これは、単一のデータフレームで機能します。
ただし、リストをマップするために縮尺することはできません。
df2 %>% mutate(data = map(data, ~ group_by(.x, group_meas) %>%
mutate(gr_m_index = row_number())))
私はそれが間違った場所で探している示唆次のエラーを取得するよう、これはtidyeval
ものでなければならないと思います。
Evaluation error: Column
gr_m_index
must be length 24 (the number of rows) or one, not 4.
にはどうすればデータフレームの列にグループ化されたインデックスを追加するmap()
を使用するには?