我正在尝试通过删除每三列来减小数据框的大小。
这是我的示例数据框:
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中的错误:二进制运算符的非数字参数
预先感谢您的帮助。
答案 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)])