从R中的数据帧删除第n列

时间:2020-04-20 16:52:02

标签: r dataframe

我正在尝试通过删除每三列来减小数据框的大小。

这是我的示例数据框:

example = data.frame(x=c(1,2,3,4), y=c(1,2,3,4), z=c(1,2,3,4), w=c(1,2,3,4), p=c(1,2,3,4), q=c(1,2,3,4), r=c(1,2,3,4))

看起来像这样

x y z w p q r
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

我想将其转换为如下形式的

x y w p r
1 1 1 1 1 
2 2 2 2 2 
3 3 3 3 3 
4 4 4 4 4 

我已经可以使用tidyverse减少行数:

example <- example %>% dplyr::filter(row_number() %% 3 != 1) 

但是我不知道如何删除每三列。

我也尝试使用此行:

example[, !(c%%3==0)]

来自Deleting every n-th row in a dataframe,但我不断收到此错误: c %% 3中的错误:二进制运算符的非数字参数

预先感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

这里是:

library(dplyr)

col_index <- seq(1:ncol(example)) 
example %>% select(col_index[col_index %% 3 != 0]) 

答案 1 :(得分:1)

您可以在base中以非常简单的方式进行操作。

example[, c(TRUE, TRUE, FALSE)]

对于列,逻辑向量将根据需要重复。如果要缩放,可以执行以下操作。

n <- 3
example[, c(rep(TRUE, n - 1), FALSE)]

如果您愿意,可以将dplyr等效为:

example %>%
  select(everything()[c(TRUE, TRUE, FALSE)])