根据索引将数据框提取为多个子集

时间:2018-07-06 11:29:57

标签: r indexing subset

我有一个包含大量列的数据框。我想根据开始索引和结束索引在列处拆分数据框。这些索引值当前以如下方式存储在向量中:

1 18 19 25 26 33 34 41 42 49 ...

此后,我想将第一个数据帧(第1-18列)添加到所有其他数据帧中(无需手动进行)。

1 个答案:

答案 0 :(得分:0)

一种方法是将拆分向量转换为2列矩阵,然后将其应用于感兴趣的data.frame。结果,您将获得所需的数据帧列表。

# Simulataed data frame with 100 columns
df <- as.data.frame(matrix(1:1000, ncol = 100))

# Splits vector
splits <- c(1, 18, 19, 25, 26, 33, 34, 41, 42, 49, 50, 100)

# Extract columns we need to add to the rest of split data frames
first <- splits[1:2]
rest <- splits[-(1:2)]

# create a matrix with two columns
splits_m <- matrix(rest, ncol = 2, byrow = TRUE)

# make list of data frame base on splits
dfl <- apply(splits_m, 2, function(x) df[, c(x[1]:x[2], first[1]:first[2])])

# access the first data.frame
dfl[[1]]