r - 需要一个 R 函数来从数据框中选择特定的命名列
问题描述
我对 R 比较陌生。我有一个数据集,我通过包 xlsx 导入到 R 中,并由“randomAssignment”列过滤。但是,在新创建的数据框(如ABCD、CDEF等)中,存在空行的列;我想删除这些列。最好/最快的方法是什么?
require(xlsx)
require(tidyr)
require (dplyr)
require(tidyverse)
#IMPORT XLSX DATA INTO R USING XLSX PACKAGE
originalData <- read.xlsx("C:/Users/help/Desktop/GetTestedMessageTesting_FinalRawData_12292018.xlsx", 1, header = TRUE, colIndex = NULL, as.data.frame = TRUE)
ABCD <- filter (originalData, randomAssignment == "ABCD")
EFGH <- filter (originalData, randomAssignment == "EFGH")
IJKL <- filter (originalData, randomAssignment == "IJKL")
MNOP <- filter (originalData, randomAssignment == "MNOP")
QRST <- filter (originalData, randomAssignment == "QRST")
UVWX <- filter (originalData, randomAssignment == "UVWX")
CDEF <- filter (originalData, randomAssignment == "CDEF")
YZAB <- filter (originalData, randomAssignment == "YZAB")
解决方案
我解释了您的问题以删除所有缺失 / NA 值的列。这是一种解决方案 - 如果您的数据实际上不是,您可能需要修改匿名函数NA
。
该函数的要点是,我们为每一列创建一个布尔值 (TRUE/FALSE) my_mtcars
,对应于所有条目是否为,NA
并且我们否定它以返回该列。
#create copy of mtcars
my_mtcars <- mtcars
#set hp to NA
my_mtcars$hp <- NA
#filter out columns that are all NA
head(my_mtcars[, sapply(my_mtcars, function(x) !all(is.na(x)))])
#> mpg cyl disp drat wt qsec vs am gear carb
#> Mazda RX4 21.0 6 160 3.90 2.620 16.46 0 1 4 4
#> Mazda RX4 Wag 21.0 6 160 3.90 2.875 17.02 0 1 4 4
#> Datsun 710 22.8 4 108 3.85 2.320 18.61 1 1 4 1
#> Hornet 4 Drive 21.4 6 258 3.08 3.215 19.44 1 0 3 1
#> Hornet Sportabout 18.7 8 360 3.15 3.440 17.02 0 0 3 2
#> Valiant 18.1 6 225 2.76 3.460 20.22 1 0 3 1
由reprex 包(v0.2.1)于 2019 年 1 月 12 日创建
推荐阅读
- reactjs - 组件样式是否可以限定范围而不是内联以防止同一页面上的多个 React 应用程序覆盖?
- javascript - JS textcontent 仅设置为字符串的一部分
- wordpress - 处理订单时以编程方式生成 WC 优惠券 - 优惠券代码错误
- opencv - 使用opencv在图像中绘制我的边界框,但bbox从不显示
- javascript - 反应 useContext 失去状态
- vue.js - Vuelidate & Tailwind:为什么我总是看到无效错误?
- html - 如何创建三行标签:middle/up + down
- c# - 关闭申请后申请流程未终止
- delphi - 使用 Direct2D 绘制阴影
- c - 1. 我是否正确释放内存?2. 在第二个 for 循环中发生了什么导致第一次迭代后打印出大量字符?