R-选择最后2列

Skl*_*cka 1 select r

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

   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)
Run Code Online (Sandbox Code Playgroud)

不指定列名怎么办?

df %>%
  select(date2, date3)
Run Code Online (Sandbox Code Playgroud)

Seb*_*uer 7

聚会迟到了。仅作为记录,有一种方便的方法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
Run Code Online (Sandbox Code Playgroud)

由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>
Run Code Online (Sandbox Code Playgroud)


Ron*_*hah 5

您可以使用selectwith 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
Run Code Online (Sandbox Code Playgroud)

在基数R中是

df[tail(names(df), 2)]
Run Code Online (Sandbox Code Playgroud)

  • @Sklenicka 你的意思是`df %&gt;% select(1, tail(names(.), 2))`? (2认同)