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