r - 用于保留最后一列的函数
问题描述
当我使用时;data = Filter(function(x) sd(x) > 0.1, df) 我丢失了分类变量(最后一列),因此我必须 cbind.data.frame() 在过滤数据后取回分类变量。有没有办法编写函数来过滤那些 SD>0.1 的数值变量并仍然保留分类变量?
原始数据包含分类变量(上图)。之后,我使用 --data = Filter(function(x) sd(x) > 0.1, df) 删除了 SD = 0 的列 - 删除了分类变量列(下图)。我只想删除 SD=0 的列,但我不知道如何正确地包裹在函数 () 中。
解决方案
使用新版本的dplyr
,我们可以使用select
withwhere
library(dplyr)
df %>%
select(where(~ is.character(.)| (is.numeric(.) && sd(.) > 1)))
iris
具有数据集的可重现示例
data(iris)
iris %>%
select(where(~ is.character(.)| (is.numeric(.) && sd(.) > 1))) %>%
head
# Petal.Length
#1 1.4
#2 1.4
#3 1.3
#4 1.5
#5 1.4
#6 1.7
推荐阅读
- python - 如何记录 func_name 和文件名
- excel - 转换十六进制 (AF) 数字
- performance - Nopcommerce 速度问题
- webrtc - Opentok + 自定义音频网络声音创建声学反馈
- sql - oracle sql中的regex_replace
- unit-testing - Xamarin.Forms MVVMLight 应用程序的 Xunit 测试无法正常工作,并且永远不会停止运行
- laravel - 删除不适用于针对 API 的 Vue 路由
- windows - 启动 git bash 给出错误“bash: fork: retry: No child processes”
- ios - 什么时候在没有可见函数调用的程序中调用 swift 函数?
- java - 如何将列表转换为唯一列表?