[英]How to replace values in multiple columns in a data.frame with values from a vector in R?
[英]R: Removing multiple columns from data frame based on vector values
我有一个数据框dataGL_all:
Date<-c("01-01-15 04:00","01-01-15 04:20","01-01-15 04:40")
FLIin<-c(96,39,72)
FLIout<-c(173,147,103)
FBEin<-c(96,116,166)
FBEout<-c(32,53,120)
dataGL_all<-data.frame(Date, FLIin, FLIout, FBEin, FBEout)
此外,我有一个矢量:
Remove <- c("FBEin", "FLIout")
我想要一段代码来删除向量中的列从数据框中删除dataGL_all。 我已经尝试了很多函数组合(例如grep(),c()和names())但是无法让它工作...会很感激帮助:) thx
PS我的“真实”数据框包含68列,我想删除36列(向量中的那些)。
dataGL_all[, !names(dataGL_all) %in% Remove]
应该做的伎俩。 或者,如果你想要grep
:
dataGL_all[, grep(paste(Remove, collapse = "|"), names(dataGL_all), invert = T)]
只是为了添加更多的可能性,使用data.table
包这些操作非常简单。 您可以使用临时删除列!
和with = FALSE
组合。 或者您可以在data.table
环境中使用()
评估此向量时通过引用修改数据集,并使用:=
赋值运算符data.table
赋值NULL
,所以这里:
加载包并转换为data.table
类
library(data.table)
setDT(dataGL_all)
然后要么做
dataGL_all[, !Remove, with = FALSE]
# Date FLIin FBEout
# 1: 01-01-15 04:00 96 32
# 2: 01-01-15 04:20 39 53
# 3: 01-01-15 04:40 72 120
或者通过引用更新数据集
dataGL_all[, (Remove) := NULL][]
# Date FLIin FBEout
# 1: 01-01-15 04:00 96 32
# 2: 01-01-15 04:20 39 53
# 3: 01-01-15 04:40 72 120
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.