【问题标题】:Deleting every nth column from a dataframe in r从 r 中的数据框中删除每第 n 列
【发布时间】:2020-04-20 16:52:02
【问题描述】:

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

这是我的示例数据框:

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 中的错误:二元运算符的非数字参数

提前感谢您的帮助。

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    您可以在 base 中以非常简单的方式做到这一点。

    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]) 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-04
        • 1970-01-01
        • 2015-04-03
        • 2022-09-22
        • 2021-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多