Извлечение каждого 7-го столбца, пропуская первые 4 столбца

Я ищу простой код в R, который может использовать дополнительные данные из большего набора данных. Как я могу сохранить первые 4 столбца (text1, text2, text3, text4), а затем каждый 7-й столбец (столбец a, столбец h и т. д.).

example_df <- data.frame(txt1=c(1,2,3,4), txt2=c(1,2,3,4), txt3=c(1,2,3,4), txt4=c(1,2,3,4), a=c(1,2,3,4), b=c(1,2,3,4), c=c(1,2,3,4), d=c(1,2,3,4), e=c(1,2,3,4), f=c(1,2,3,4), g=c(1,2,3,4),h=c(1,2,3,4), i=c(1,2,3,4), j=c(1,2,3,4))

Что будет выглядеть так:

  txt1 txt2 txt3 txt4 a b c d e f g h i j
1    1    1    1    1 1 1 1 1 1 1 1 1 1 1
2    2    2    2    2 2 2 2 2 2 2 2 2 2 2
3    3    3    3    3 3 3 3 3 3 3 3 3 3 3
4    4    4    4    4 4 4 4 4 4 4 4 4 4 4

Мне нужно, чтобы это выглядело так

  txt1 txt2 txt3 txt4 a h 
1    1    1    1    1 1 1 
2    2    2    2    2 2 2 
3    3    3    3    3 3 3 
4    4    4    4    4 4 4 

person JurreS    schedule 19.10.2020    source источник


Ответы (2)


Теперь я привык к следующему трюку, но может быть более быстрый способ сделать это.

library(dplyr)
example_df <- df_extracted %>% select(2, 10,    17, 24, 31, 38, 45, 52, 59, 66, 73, 80, 87, 94, 101,    108,    115,    122,    129,    136,    143,    150,    157,    164,    171,    178,    185,    192,    199,    206,    213,    220,    227,    234,    241,    248,    255)
person JurreS    schedule 19.10.2020

Это можно решить простым способом. Первый шаг — узнать общее количество столбцов, скажем, 30. Теперь по умолчанию выбраны первые четыре, поэтому индексы для фильтрации начинаются с 5 до 30. Из этого вектора выбираем те, которые нам нужны. Подготовьте вектор индексов и перейдите к команде select в tidyverse. В нашем случае seq(4,30,7) даст нам следующие индексы=c(4, 11, 18, 25). Мы можем либо отфильтровать 4, либо удалить их из нашего первого набора, как показано ниже.

library(dplyr)
nc=ncol(example_df)
indices=seq(4,nc,7)

example_df <- df_extracted %>% select(1:3,indices)
person HexGuy    schedule 19.10.2020
comment
Большое спасибо! Это экономит мне время, чтобы вручную выбирать их! - person JurreS; 28.10.2020