我想將兩個獨立的列組收集到兩個鍵值對中。下面是一些示例性數據:使用gather()將兩個(或更多)列組收集到兩個(或更多)鍵值對中
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)
我希望兩個量度列(措施1和measure2)的值是在一列中具有鍵柱旁邊(鍵 - 值對)。我也希望letter1和letter2一樣。我想,我可以使用select()創建兩個不同的數據集,用兩個數據集seperately收集,然後加入(這工作):
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")
所以這完美的作品(在這種情況下),但我想這可以做得更優雅(沒有像分裂或創建'id.extra'之類的東西),所以請說明一下吧!
的聚攏()函數不能做到這一點? –
@BenjaminTelkamp,不能做什麼?我在第一種方法中使用了「收集」功能。但是,你必須收集*所有的列,然後將它們分開。 – A5C1D2H2I1M1N2O1R2T1