在R中从数据框中删除每个第n列

3

我想通过删除每三列的方式来缩小dataframe的大小。

以下是我的示例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)]

从数据框中删除每第n行,但我一直收到这个错误: Error in c%%3 : non-numeric argument to binary operator 非常感谢您的帮助。
2个回答

5

你可以在基础版中以非常简单的方式完成此操作。

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

逻辑向量将根据列的需要重复。如果您希望其比例缩放,可以执行以下操作。
n <- 3
example[, c(rep(TRUE, n - 1), FALSE)]

如果您喜欢,可以使用 dplyr 来达到同样的效果:
example %>%
  select(everything()[c(TRUE, TRUE, FALSE)])

2
这是它:
library(dplyr)

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接