R - 选择最后 2 列

问题描述 投票:0回答:6

我下面有一个数据框,实际上它实际上有更多的列,我只想选择最后两列。

   df <- read.table(text="
                 date1       date2              date3
    1            NA          2016-12-01    2016-12-01
    2            2017-01-01  2018-10-01    2016-12-01 
    3            2016-12-01  NA            2016-12-01
    4            NA          NA            2016-12-01
", header=TRUE)

如何在不指定列名的情况下做到这一点?

df %>%
  select(date2, date3)
r select
6个回答
15
投票

您可以使用

select
tail
来获取最后 2 列名称

library(dplyr)

df %>% select(tail(names(.), 2))

#       date2      date3
#1 2016-12-01 2016-12-01
#2 2018-10-01 2016-12-01
#3       <NA> 2016-12-01
#4       <NA> 2016-12-01

R 基数是

df[tail(names(df), 2)]

8
投票

聚会迟到了。仅作为记录,

tidyverse
中有一种方便的方法来选择最后一列:


library(tidyverse)
df %>% 
  select(last_col(offset = 1), last_col())

       date2      date3
1 2016-12-01 2016-12-01
2 2018-10-01 2016-12-01
3       <NA> 2016-12-01
4       <NA> 2016-12-01

reprex 包于 2021 年 1 月 20 日创建(v0.3.0)

来源

选择第一列非常简单:

> df %>% 
+   select(1,2)
       date1      date2
1       <NA> 2016-12-01
2 2017-01-01 2018-10-01
3 2016-12-01       <NA>
4       <NA>       <NA>

3
投票

我们可以利用

ncol

df[(ncol(df)-1):ncol(df)]
#       date2      date3
#1 2016-12-01 2016-12-01
#2 2018-10-01 2016-12-01
#3       <NA> 2016-12-01
#4       <NA> 2016-12-01

或使用

select_at

library(tidyverse)
df %>%
    select_at((ncol(.)-1) : ncol(.))

0
投票

没有 dplyr:

df.minus.2.columns <- df[,c(-1,-2)]

抱歉,不知道如何使用 dplyr 来做到这一点。


0
投票

使用 dplyr 并使用矢量化操作,您可以选择最后的

n
观测值:

n <- 2
library(tidyverse)
df %>% tail()
df %>% select(last_col()-(n-1):0) %>% tail()

       date2      date3
1 2016-12-01 2016-12-01
2 2018-10-01 2016-12-01
3       <NA> 2016-12-01
4       <NA> 2016-12-01

0
投票

另一种变化:

library(tidyverse)

diamonds |> 
  select(9:last_col())
#> # A tibble: 53,940 × 2
#>        y     z
#>    <dbl> <dbl>
#>  1  3.98  2.43
#>  2  3.84  2.31
#>  3  4.07  2.31
#>  4  4.23  2.63
#>  5  4.35  2.75
#>  6  3.96  2.48
#>  7  3.98  2.47
#>  8  4.11  2.53
#>  9  3.78  2.49
#> 10  4.05  2.39
#> # ℹ 53,930 more rows

创建于 2024-05-02,使用 reprex v2.0.2

© www.soinside.com 2019 - 2024. All rights reserved.