2つの別々の列のグループを2つのキーと値のペアにまとめる必要があります。gather()を使用して、2つ(またはそれ以上)のキーと値のペアに2つ以上の列のグループを集める
library(dplyr)
library(tidyr)
ID = c(1:5)
measure1 = c(1:5)
measure2 = c(6:10)
letter1 = c("a", "b", "c", "d", "e")
letter2 = c("f", "g", "h", "i", "j")
df = data.frame(ID, measure1, measure2, letter1, letter2)
df = tbl_df(df)
df$letter1 <- as.character(df$letter1)
df$letter2 <- as.character(df$letter2)
私は2つのメジャー列(measure1と測定2)の値の横にキー列(キーと値のペア)を1列になりたい:ここではいくつかのサンプルデータです。私もletter1とletter2に同じものが必要です。だから、これは(この場合は)完璧に動作しますが、私はこれを推測
df_measure = df %>%
select(ID, measure1, measure2) %>%
gather(measure_time, measure, -ID) %>%
mutate(id.extra = c(1:10))
df_letter = df %>%
select(ID, letter1, letter2) %>%
gather(letter_time, letter, -ID) %>%
mutate(id.extra = c(1:10))
df_long = df_measure %>%
left_join(df_letter, by = "id.extra")
を:私は、私は(これは働いていた)に参加、その後、select()の二つの異なるデータセットを作成するために使用し、両方のデータセットに個別に集まっ使用してできることを考え出し(id.extraを分割したり作成したりすることなく)もっとエレガントに行うことができます。
は()関数はこれを行うことはできませんギャザー複数取ることができます
data.table
からmelt
を使用することができますか? –@BenjaminTelkamp、何もできない?私は最初のアプローチで 'gather'関数を使用しました。しかし、列のすべてを集めてからそれらを広げなければなりません。 – A5C1D2H2I1M1N2O1R2T1