首页 > 解决方案 > 每 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 

标签: rdplyrtidyversedata-extraction

解决方案


这可以通过简单的方式解决。第一步是找出总列数,假设它是 30。现在默认选择前四个,因此过滤我们的索引从 5 到 30 开始。从这个向量中选择我们需要的那些。准备一个索引向量并传递给 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)

推荐阅读