从矢量中提取100个部分

时间:2017-06-25 18:58:05

标签: r vector

我有一个长度为1000的向量。它包含100个参与者的(数字)调查答案,因此每个参与者有10个答案。我想删除每个参与者的前三个值,以创建一个长度为700的新向量(仅包括问题4-10的答案)。

我只知道如何提取矢量的每个第n个值,但无法计算如何解决上述问题。

vector <- seq(1,1000,1)

预期产出:

4 5 6 7 8 9 10    14 15 16 17 18 19 20    24 ...

2 个答案:

答案 0 :(得分:2)

使用矩阵首先构造然后展平是一种方法。另一种类似的方法是使用我所谓的“逻辑模式索引”:

head(             # just showing the first couple of "segments"
  vector[ c( rep(FALSE, 3), rep(TRUE, 10-3) ) ], 
    15)
 [1]  4  5  6  7  8  9 10 14 15 16 17 18 19 20 24

此方法也可以在[的两个参数版本中使用,以使用逻辑模式索引选择行ore列。这是因为R的逻辑指数的回收。

答案 1 :(得分:1)

感谢您提供示例数据,基于此数据可以重现此线程。这是一个解决方案

c(matrix(vector, 10)[4:10, ])

我们首先将向量转换为具有10行的矩阵,以便每列属于参与者。然后使用行子集来删除前三行。最后,矩阵再次扁平化为矢量。