R постройте фрейм данных, используя 2 столбца

#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