我正在尝试使用grep将数据框的列子集为一行。当grep返回多个列时,新数据框具有grep中相应的列名。当只返回一列时,列名为NULL
...我正在使用此方法,因为我正在循环许多可能包含不同HVAC传感器数据组合的站点。
我正在尝试为每个单元'HVAC1','HVAC2','HVAC3'创建子集,并为所有单元共用的列创建子集。在这种情况下,只有一列对所有单元都是通用的:'IAT'或室内环境温度。此外,没有第三个HVAC单元,因此HVAC 3上的grep正确地将names(sensordata.h3)
作为character(0)
返回。
这是我的代码。
sensordata <- data.frame(sitetime = c("2015-10-22 14:15:17"), HVAC1RT = c(70.7), HVAC1ST = c(74.75), HVAC2RT = c(66.875), HVAC2ST = c(46.4), IAT = c(72.5))
sensordata
names(sensordata)
sensordata.h1 <- sensordata[,c(grep("HVAC1",names(sensordata)))]
sensordata.h1
names(sensordata.h1)
sensordata.h2 <- sensordata[,c(grep("HVAC2",names(sensordata)))]
sensordata.h2
names(sensordata.h2)
sensordata.h3 <- sensordata[,c(grep("HVAC3",names(sensordata)))]
sensordata.h3
names(sensordata.h3)
sensordata.common <- sensordata[,c(grep("IAT|OAT|IAH",names(sensordata)))]
sensordata.common
names(sensordata.common)
答案 0 :(得分:0)
试试这个:
sensordata.common <- sensordata[,c(grep("IAT|OAT|IAH",names(sensordata))), drop=F]
sensordata.common
IAT
1 72.5
names(sensordata.common)
[1] "IAT"
选项drop=F
阻止[
将输出减少为向量。请参阅?[
(您需要在[
周围使用反引号,无法在此处正确格式化...
或者,您可以使用dplyr::select
,例如select(sensordata.common, contains("your_names_here"))
。 dplyr
的默认值是永远不会更改输出类。