如何在数据框中按名称删除列

我有一个大的数据集,我想读取特定的列或删除所有其他列

数据<-read.dta(“file.dta”)

我选择了我不感兴趣的列:

var.out<-名称(数据)[!名称(数据)%in%c(“iden”、“name”、“x_serv”、“m_serv”)]

然后我想做一些事情,比如:

用于(i输入1:长度(变量输出)){
粘贴(“数据$”,var.out[i],sep=”“)<空
}

删除所有不需要的列。这是最佳解决方案吗

您应该使用索引或子集功能。例如:

R>df<-数据帧(x=1:5,y=2:6,z=3:7,u=4:8)
R>df
x y z u
1 1 2 3 4
2 2 3 4 5
3 3 4 5 6
4 4 5 6 7
5 5 6 7 8

然后可以在列索引中使用which函数和-运算符:

R>df[,-其中(在%c(“z”,“u”)中命名(df)%1)]
xy
1 1 2
2 2 3
3 3 4
4 4 5
5 5 6

或者,更简单的是,使用subset函数的select参数:然后可以直接在列名向量上使用-运算符,甚至可以省略名称周围的引号

R>子集(df,select=-c(z,u))
xy
1 1 2
2 2 3
3 3 4
4 4 5
5 5 6

请注意,您还可以选择所需的列,而不是删除其他列:

R>df[,c(“x”,“y”)]
xy
1 1 2
2 2 3
3 3 4
4 4 5
5 5 6
R>子集(df,select=c(x,y))
xy
1 1 2
2 2 3
3 3 4
4 4 5
5 5 6

发表评论