R语言按照行名或列名删除对应的行列

鉴于俺不想使用列表序号的方式删除行列,根据以下两个网站找到了根据行列名删除的方法(R语言):

https://liuyang0681.github.io/2019/04/28/R-按照行名或列名删除对应的行列/

https://stackoverflow.com/questions/5234117/how-to-drop-columns-by-name-in-a-data-frame


data[ , !colnames(data) %in% c("b","d")]

!函数比which好用,因为which如果选中不存在的行列名,将删除所有内容

X[,-grep("B",colnames(X))]
X[,-grep("B|D",colnames(X))]
X[,!grepl("B|D",colnames(X))]

grepl与grep的区别在于:X[,-grep("B",colnames(X))]如果没有列名包含B则将不返回任何列,而不是根据需要返回所有列。考虑X <- iris一个例子。这是将负索引与计算值一起使用的问题。考虑grepl代替。 –马修·伦德伯格 (  Matthew Lundberg)

subset(df, select=-c(z,u)) # 不要用带引号的列名 !!!!

subset(df, select=c(x,y))

dplyr::select(df2, -c(x, y))

 

总结:按照行名或列名删除对应的行列

·data[ , !colnames(data) %in% c("b","d")]

解释:!函数比which好用,因为which如果选中不存在的行列名,将删除所有内容

·subset(  df, select=-c(z,u)  )

解释:当选取的是中文列名,这个方法不好用

·dplyr::select(  df2, -c(x, y)  )

解释:有效解决了subset函数无法选取删除中文列名的问题,例如:x<-dplyr::select(x,-c('缺陷名称','包装后成品补偿重量'))

·X[,!grepl("B|D",colnames(X))]

解释:这个很强大,grepl比grep好用,参考文献给出很好的解释


更新:https://blog.csdn.net/ofoliao/article/details/106593035 给出了很好的补充,ofoliao大佬很赞!

无论行列,可以找出对应索引或构造相同长度TRUE/FALSE的向量,把不需要的行/列删除

#index#

-which(colnames(df) %in% c("a","b"))
-grep("a|b",colnames(df)

#T/F vector#

!colnames(df) %in% c("a","b")
!grepl("a|b", colnames(df))

另外给出ofoliao大佬删除数据集中包含缺失数据NA的行的解释

https://blog.csdn.net/ofoliao/article/details/105914609

https://stackoverflow.com/questions/4862178/remove-rows-with-all-or-some-nas-missing-values-in-data-frame


上帝在祂的独生子耶稣基督里,并为了祂,将得儿子的名分的恩典,赐给一切称义的人(弗1:5);他们由此而被归入上帝的子民之列,得享上帝儿女的自由和特权(加4:4-5;罗8:17;约1:12);有祂的名字写在他们身上(耶14:9;林后6:18;启3:12);领受那赐人儿子名分的圣灵(罗8:15);可以坦然无惧地来到施恩宝座前(弗3:12;罗5:2);得以呼叫阿爸,父(加4:6);并蒙受祂如父一般的怜恤(诗103:13),保护(箴14:26),供给(太6:30,32;彼前5:7),管教(来12:6);永不被撇弃(哀3:31),且受印记,等候得赎的日子来到(弗4:30),并承受应许(来6:12),为上帝永远救恩的后嗣(彼前1:3,4;来1:14)。——《威斯敏斯德信条·论得儿子的名分》感恩❤


参考文献:

R-按照行名或列名删除对应的行列 | 暗之洋光
https://liuyang0681.github.io/2019/04/28/R-%E6%8C%89%E7%85%A7%E8%A1%8C%E5%90%8D%E6%88%96%E5%88%97%E5%90%8D%E5%88%A0%E9%99%A4%E5%AF%B9%E5%BA%94%E7%9A%84%E8%A1%8C%E5%88%97/

  • 9
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值