我有这个数据框,我正在阅读一个网址。当我读到网址时,我得到了一些混合数据。我希望能够做两件事:
将df子集化,以便colnames只包含CPU.Percent(有时由于某种原因我得到内存或磁盘利用率,我需要删除这些列)。
colnames只应包含服务器名称,例如dc1server,dc1web等。
这是我的数据框,名为df:
dput(DF)
structure(list(Time = structure(1:2, .Label = c("1/13/2015",
"1/14/2015"), class = "factor"), WEB..Linux..Total.CPU.Percent.Utilization.on.dc1server.Utilization = structure(1:2, .Label = c("3.67%",
"3.75%"), class = "factor"), WEB..Linux..Total.CPU.Percent.Utilization.on.dc1web2.Utilization = structure(c(2L,
1L), .Label = c("13.08%", "13.25%"), class = "factor"), WTAD..Linux..Virtual.Memory.on.dc1server1.Percent.Used = structure(c(2L,
1L), .Label = c("9%", "9.42%"), class = "factor")), .Names = c("Time",
"WEB..Linux..Total.CPU.Percent.Utilization.on.dc1server.Utilization",
"WEB..Linux..Total.CPU.Percent.Utilization.on.dc1web2.Utilization",
"WTAD..Linux..Virtual.Memory.on.dc1server1.Percent.Used"), class = "data.frame", row.names = c(NA,
-2L))
1。
我试过了:
data<-subset(df, grep("CPU.Percent", colnames(df))
无效
for 2:
我试过了:
colnames(df)<-gsub(colnames(df), grep(".(dc1.*).",colnames(df))
没有运气,任何想法我在这里做什么?
答案 0 :(得分:3)
正如akrun所说,
data <- df[, grepl("CPU.Percent", colnames(df))]
解决了第一个问题。
对于第二个,试试这个
colnames(df) <- sub(".*\\.(dc[^\\.]*)\\..*", "\\1", colnames(df))
请注意,更改列名将改变第一位代码的工作方式。请确保按正确的顺序执行这些操作。
如果您首先更改了colnames,那么第一个问题解决方案将是:
data <- df[,2:3]