R语言笔记——数据框的删除/保留二
上个专题已经详细介绍了两个R包。dplyr和data.table,这两个R包可以广泛应用于数据分析中,下个专题将介绍R语言的一些基本技能和实用技巧。
本文将介绍如何保留或删除数据框中的变量(列)。在R中,有多种选择或删除列的方法。
按名称模式保留/删除列
下面的代码为以下四个变量创建数据:
INC_A SAC_AINC_B ASD_A
> mydata = read.table(text="
+ INC_A SAC_A INC_B ASD_A
+ 2 1 5 12
+ 3 4 2 13
+ ", header=TRUE)
## INC_A SAC_A INC_B ASD_A
## 1 2 1 5 12
## 2 3 4 2 13
保留名称以“ INC”开头的列
grepl()函数用于搜索与模式的匹配项。在这种情况下,它将在数据框mydata的列名开头搜索“ INC”。它返回INC_A和INC_B。
"^INC",names(mydata))] mydata1 = mydata[,grepl(
## INC_A INC_B
## 1 2 5
## 2 3 2
删除名称以“ INC”开头的列
该“!” 符号表示否定。它返回SAC_A和ASD_A。
"^INC",names(mydata))] mydata2 = mydata[,!grepl(
## SAC_A ASD_A
## 1 1 12
## 2 4 13
保留名称末尾包含“ _A”的列
“ $”用于在字符串末尾搜索子字符串。它返回INC_A,SAC_A和ASD_A。
"_A$",names(mydata))] mydata3 = mydata[,grepl(
## INC_A SAC_A ASD_A
## 1 2 1 12
## 2 3 4 13
删除名称末尾包含“ _A”的列
"_A$",names(mydata))] mydata4 = mydata[,!grepl(
保留名称包含字母“ S”的列
"*S",names(mydata))] mydata5 = mydata[,grepl(
# SAC_A ASD_A
# 1 1 12
# 2 4 13
如果您希望找出包含特定单词的列,则同样的逻辑也可以应用于单词。在下面的示例中,我们尝试将列包含在其中,C_A并为保留的列创建一个新的数据框。
"*C_A",names(mydata))] mydata6 = mydata[,grepl(
## INC_A SAC_A
## 1 2 1
## 2 3 4
删除名称包含字母“ S”的列
"*S",names(mydata))] mydata7 = mydata[,!grepl(
# INC_A INC_B
# 1 2 5
# 2 3 2
删除列中缺失值超过50%的列
创建一个虚拟数据框,其中包含几个缺失或空白值以供说明。
> df= data.frame(x=c(1,2,3,NA,NA), y=c(5,NA,3,NA,NA), Z=c(5,3,3,4,NA))
## x y Z
## 1 1 5 5
## 2 2 NA 3
## 3 3 3 3
## 4 NA NA 4
## 5 NA NA NA
sapply功能是for loop。它在数据帧的每一列上运行内置或用户定义的函数。sapply(df, function(x)mean(is.na(x)))返回数据框中每一列中缺失值的百分比。
> df = df[,!sapply(df, function(x) mean(is.na(x)))>0.5]
## x Z
## 1 1 5
## 2 2 3
## 3 3 3
## 4 NA 4
## 5 NA NA
R功能:保留/删除列功能
以下程序可自动保留或删除数据帧中的列。
> KeepDrop = function(data=df,cols="var",newdata=df2,drop=1) {
+
+ # Double Quote Output Dataset Name
+ t = deparse(substitute(newdata))
+
+
+ # Drop Columns
+ if(drop == 1){
+ newdata = data [ , !(names(data) %in% scan(textConnection(cols), what="", sep=" "))]}
+
+ # Keep Columns
+ else {
+ newdata = data [ , names(data) %in% scan(textConnection(cols), what="", sep=" ")]}
+ assign(t, newdata, .GlobalEnv)
+
+ }
如何使用上面的函数
要保留变量'a'和'x',请使用下面的代码。所述drop= 0意味着保持变量被在参数“COLS”指定。参数 “数据”是指输入数据帧。“ cols”是指您要保留/删除的变量。“ newdata”是指输出数据帧。
"a x", newdata=dt, drop=0) KeepDrop(data=mydata,cols=
要删除变量,请使用下面的代码。所述drop= 1意味着除去变量这是在功能的第二参数定义。
"a x", newdata=dt, drop=1) KeepDrop(data=mydata,cols=
◆R语言笔记——数据框的删除/保留一