#r #dataframe
Вопрос:
У меня есть фрейм данных, такой как:
df
group group_name value 1 1 lt;NAgt; VV0001 2 1 lt;NAgt; VV_RS00280 3 2 lt;NAgt; VV0002 4 2 lt;NAgt; VV_RS00285 5 3 lt;NAgt; VV0003 6 3 lt;NAgt; VV_RS00290 7 5 lt;NAgt; VV0004 8 5 lt;NAgt; VV_RS00295 9 6 lt;NAgt; VV0005 10 6 lt;NAgt; VV_RS00300 11 7 lt;NAgt; VV0006 12 7 lt;NAgt; VV_RS00305 13 8 lt;NAgt; VV0007 14 8 lt;NAgt; VV_RS00310 15 9 lt;NAgt; VV0009 16 9 lt;NAgt; VV_RS00315 17 10 lt;NAgt; VV0011 18 10 lt;NAgt; VV_RS00320 19 11 lt;NAgt; VV0012 20 11 lt;NAgt; VV_RS00325 21 12 lt;NAgt; VV0013 22 12 lt;NAgt; VV_RS00330
поэтому я хочу построить другой фрейм данных, используя столбцы «группа» и «значение», вся группа 1 ( df[df$group == 1,]
) получит данные в столбце «значение» (VV0001, VV_RS00280) и построит данные.фрейм, как:
group value 1 VV0001 VV_RS00280
а потом следующий df[df$group == 2,]
, и так далее, в конце будет:
group value 1 VV0001 VV_RS00280 2 VV0002 VV_RS00285 3 VV0003 VV_RS00290 4 VV0004 VV_RS00295
Я пытался сделать это вручную, но nrow(df)
он большой, gt; 3000 или больше !!
Спасибо
Ответ №1:
Вы можете попробовать,
library(dplyr) library(tidyr) df %gt;% rename(idv = group) %gt;% mutate(group_name = rep(c("group", "value"),n()/2)) %gt;% group_by(idv) %gt;% pivot_wider(names_from = group_name, values_from = value) %gt;% ungroup %gt;% select(-idv) group value lt;chrgt; lt;chrgt; 1 VV0001 VV_RS00280 2 VV0002 VV_RS00285 3 VV0003 VV_RS00290 4 VV0004 VV_RS00295 5 VV0005 VV_RS00300 6 VV0006 VV_RS00305 7 VV0007 VV_RS00310 8 VV0009 VV_RS00315 9 VV0011 VV_RS00320 10 VV0012 VV_RS00325 11 VV0013 VV_RS00330