删除r中包含整数的列

删除r中包含整数的列,r,R,我有以下数据: # A tibble: 49 x 9 date Y X1 X2 X3 X4 X5 X6 ID <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> 1 2016-10-21 1 4.14 18 0

我有以下数据:

# A tibble: 49 x 9
   date           Y    X1    X2    X3    X4     X5       X6 ID   
   <date>     <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>    <dbl> <chr>
 1 2016-10-21     1  4.14    18     0     1 0.0770 0.000429 CAT1 
 2 2016-10-24     1  4.14    17     0     1 0.0793 0.000424 CAT1 
 3 2016-10-25     0  4.16    16     0     1 0.0804 0.000404 CAT1 
 4 2016-10-26     0  4.16    15     0     1 0.0626 0.000426 CAT1 
 5 2016-10-27     0  4.16    14     0     1 0.0587 0.000442 CAT1 
 6 2016-10-28     0  4.11    13     0     1 0.0610 0.000440 CAT1 
 7 2016-10-31     0  4.14    12     0     1 0.0704 0.000425 CAT1 
 8 2016-11-01     1  3.98    11     0     1 0.0867 0.000417 CAT1 
 9 2016-11-02     0  6.00    10     0     1 0.0673 0.000453 CAT1 
10 2016-11-03     0  8.42    10     0     1 0.0877 0.000429 CAT1 
# ... with 39 more rows
#一个tible:49 x 9
日期Y X1 X2 X3 X4 X5 X6 ID
1 2016-10-21 14.14 18 0 1 0.0770 0.000429 CAT1
2 2016-10-24 14.14 17 0 1 0.0793 0.000424 CAT1
3 2016-10-25 0 4.16 16 16 0 1 0.0804 0.000404 CAT1
4 2016-10-26 0 4.16 15 0 1 0.0626 0.000426 CAT1
5 2016-10-27 0 4.16 14 0 1 0.0587 0.000442 CAT1
6 2016-10-28 0 4.11 13 0 1 0.0610 0.000440 CAT1
7 2016-10-31 0 4.14 12 0 1 0.0704 0.000425 CAT1
8 2016-11-01 13.98 11 0 1 0.0867 0.000417 CAT1
9 2016-11-02 0 6.00 10 0 1 0.0673 0.000453 CAT1
10 2016-11-03 0 8.42 10 0 1 0.0877 0.000429 CAT1
# ... 还有39行
我想删除所有包含整数的列-除了Y-

#一个tible:49 x 6
日期Y X1 X5 X6 ID
1 2016-10-21 14.14 0.0770 0.000429 CAT1
2 2016-10-24 1 4.14 0.0793 0.000424 CAT1
3 2016-10-25 0 4.16 0.0804 0.000404 CAT1
4 2016-10-26 0 4.16 0.0626 0.000426 CAT1
5 2016-10-27 0 4.16 0.0587 0.000442 CAT1
6 2016-10-28 0 4.11 0.0610 0.000440 CAT1
7 2016-10-31 0 4.14 0.0704 0.000425 CAT1
8 2016-11-01 13.98 0.0867 0.000417 CAT1
9 2016-11-02 0 6.00 0.0673 0.000453 CAT1
10 2016-11-03 0 8.42 0.0877 0.000429 CAT1
# ... 还有39行
数据:


df一个
dplyr
选项可以是:

df %>%
 select(starts_with("X")) %>%
 select_if(~ sum(. %% 1) != 0) %>%
 bind_cols(df %>%
            select(-starts_with("X")))

      X1     X5       X6 date           Y ID   
   <dbl>  <dbl>    <dbl> <date>     <dbl> <chr>
 1  4.14 0.0770 0.000429 2016-10-21     1 CAT1 
 2  4.14 0.0793 0.000424 2016-10-24     1 CAT1 
 3  4.16 0.0804 0.000404 2016-10-25     0 CAT1 
 4  4.16 0.0626 0.000426 2016-10-26     0 CAT1 
 5  4.16 0.0587 0.000442 2016-10-27     0 CAT1 
 6  4.11 0.0610 0.000440 2016-10-28     0 CAT1 
 7  4.14 0.0704 0.000425 2016-10-31     0 CAT1 
 8  3.98 0.0867 0.000417 2016-11-01     1 CAT1 
 9  6.00 0.0673 0.000453 2016-11-02     0 CAT1 
10  8.42 0.0877 0.000429 2016-11-03     0 CAT1 
df%>%
选择(以“X”开头)%>%
如果(~sum(.%%1)!=0)%%>,请选择
绑定列(df%>%
选择(-以“X”开头)
X1 X5 X6日期Y ID
1 4.14 0.0770 0.000429 2016-10-21 1 CAT1
2 4.14 0.0793 0.000424 2016-10-24 1 CAT1
3 4.16 0.0804 0.000404 2016-10-25 0 CAT1
4.16 0.0626 0.000426 2016-10-26 0 CAT1
5 4.16 0.0587 0.000442 2016-10-27 0 CAT1
6.4.11 0.0610 0.000440 2016-10-28 0 CAT1
7 4.14 0.0704 0.000425 2016-10-31 0 CAT1
8 3.98 0.0867 0.000417 2016-11-01第1类
9.6.00 0.0673 0.000453 2016-11-02 0 CAT1
10 8.42 0.0877 0.000429 2016-11-03 0 CAT1

一个
dplyr
选项可以是:

df %>%
 select(starts_with("X")) %>%
 select_if(~ sum(. %% 1) != 0) %>%
 bind_cols(df %>%
            select(-starts_with("X")))

      X1     X5       X6 date           Y ID   
   <dbl>  <dbl>    <dbl> <date>     <dbl> <chr>
 1  4.14 0.0770 0.000429 2016-10-21     1 CAT1 
 2  4.14 0.0793 0.000424 2016-10-24     1 CAT1 
 3  4.16 0.0804 0.000404 2016-10-25     0 CAT1 
 4  4.16 0.0626 0.000426 2016-10-26     0 CAT1 
 5  4.16 0.0587 0.000442 2016-10-27     0 CAT1 
 6  4.11 0.0610 0.000440 2016-10-28     0 CAT1 
 7  4.14 0.0704 0.000425 2016-10-31     0 CAT1 
 8  3.98 0.0867 0.000417 2016-11-01     1 CAT1 
 9  6.00 0.0673 0.000453 2016-11-02     0 CAT1 
10  8.42 0.0877 0.000429 2016-11-03     0 CAT1 
df%>%
选择(以“X”开头)%>%
如果(~sum(.%%1)!=0)%%>,请选择
绑定列(df%>%
选择(-以“X”开头)
X1 X5 X6日期Y ID
1 4.14 0.0770 0.000429 2016-10-21 1 CAT1
2 4.14 0.0793 0.000424 2016-10-24 1 CAT1
3 4.16 0.0804 0.000404 2016-10-25 0 CAT1
4.16 0.0626 0.000426 2016-10-26 0 CAT1
5 4.16 0.0587 0.000442 2016-10-27 0 CAT1
6.4.11 0.0610 0.000440 2016-10-28 0 CAT1
7 4.14 0.0704 0.000425 2016-10-31 0 CAT1
8 3.98 0.0867 0.000417 2016-11-01第1类
9.6.00 0.0673 0.000453 2016-11-02 0 CAT1
10 8.42 0.0877 0.000429 2016-11-03 0 CAT1

这里有一个选项,使用purrr的imap作为子集向量(保留列的原始顺序)

库(purrr)

非整这里有一个选项,使用purrr的imap作为子集向量(保留列的原始顺序)

库(purrr)
不完整
df %>%
 select(starts_with("X")) %>%
 select_if(~ sum(. %% 1) != 0) %>%
 bind_cols(df %>%
            select(-starts_with("X")))

      X1     X5       X6 date           Y ID   
   <dbl>  <dbl>    <dbl> <date>     <dbl> <chr>
 1  4.14 0.0770 0.000429 2016-10-21     1 CAT1 
 2  4.14 0.0793 0.000424 2016-10-24     1 CAT1 
 3  4.16 0.0804 0.000404 2016-10-25     0 CAT1 
 4  4.16 0.0626 0.000426 2016-10-26     0 CAT1 
 5  4.16 0.0587 0.000442 2016-10-27     0 CAT1 
 6  4.11 0.0610 0.000440 2016-10-28     0 CAT1 
 7  4.14 0.0704 0.000425 2016-10-31     0 CAT1 
 8  3.98 0.0867 0.000417 2016-11-01     1 CAT1 
 9  6.00 0.0673 0.000453 2016-11-02     0 CAT1 
10  8.42 0.0877 0.000429 2016-11-03     0 CAT1 
library(purrr)

not_whole <- function(x,y) { 
      if (all(is.numeric(x)) & y != "Y") {
        !all(as.integer(x) == x)
      } else TRUE
    }

df[imap_lgl(df, ~ not_whole(.x, .y))]