Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何删除具有相同值的列(dplyr::select)?_R - Fatal编程技术网

如何删除具有相同值的列(dplyr::select)?

如何删除具有相同值的列(dplyr::select)?,r,R,我有一个数据: df <- data.frame( x = c('col', NA, 1), y = c('s', NA, 3), w = c(0, 0, 0), z = c(NA_character_, NA_character_, NA_character_) ) x y w z 1 col s 0 <NA> 2 <NA> <NA> 0 <NA> 3 1 3 0 <N

我有一个数据:

df <- data.frame(
  x = c('col', NA, 1), 
  y = c('s', NA, 3), 
  w = c(0, 0, 0), 
  z = c(NA_character_, NA_character_, NA_character_)
)

     x    y w    z
1  col    s 0 <NA>
2 <NA> <NA> 0 <NA>
3    1    3 0 <NA>
其次,我要删除z列中的所有值NA。预期结果是:

     x    y    z
1  col    s <NA>
2 <NA> <NA> <NA>
3    1    3 <NA>
     x    y w
1  col    s 0
2 <NA> <NA> 0
3    1    3 0
错误:结果1必须是单个逻辑向量,而不是长度为3的逻辑向量

我只想使用此select,不带前缀all、at、if。

如果唯一值的数量大于1,则可以使用select

library(dplyr)
df %>% select(where(~n_distinct(.) > 1))

#     x    y
#1  col    s
#2 <NA> <NA>
#3    1    3
在唯一值的数量大于1时,可以使用“选择”

library(dplyr)
df %>% select(where(~n_distinct(.) > 1))

#     x    y
#1  col    s
#2 <NA> <NA>
#3    1    3
我们可以在基带R中使用过滤器

我们可以在基带R中使用过滤器


如果我只想删除缺少数据的列怎么办?您可以执行df%>%selectwhere~ any!是的。或者df%>%selectwhere~!我试过了:librarydplyr librarymagrittr df%>%select.data=,其中fn=~!equals1=,e2=0以删除包含0的列。但是,不起作用。与NA值类似,您可以删除所有0为df%>%selectwhere~的列!全部0或df%>%selectwhere~任意。!=0如果您有NA值,请将其删除为df%>%selectwhere~ any.!=0,na.rm=TRUE。如果要保留所有NA值为df%>%的列,请选择where~ any.!=0,na.rm=TRUE | allis.na.如果我只想删除缺少数据的列怎么办?您可以执行df%>%selectwhere~任意操作!是的。或者df%>%selectwhere~!我试过了:librarydplyr librarymagrittr df%>%select.data=,其中fn=~!equals1=,e2=0以删除包含0的列。但是,不起作用。与NA值类似,您可以删除所有0为df%>%selectwhere~的列!全部0或df%>%selectwhere~任意。!=0如果您有NA值,请将其删除为df%>%selectwhere~ any.!=0,na.rm=TRUE。如果要保留所有NA值为df%>%的列,请选择where~ any.!=0,na.rm=TRUE | allis.na。
Filter(function(x) length(unique(x)) > 1, df)
#     x    y
#1  col    s
#2 <NA> <NA>
#3    1    3