【发布时间】:2017-10-22 19:11:05
【问题描述】:
我在这里展示了一个来自模型输出文件的小数据框,我提取了所需的参数time 和WatBlar 并将其转换为数据框。
完整的代码从这里开始。
library(stringr)
x <- readLines("G:/Rlearning/Mohsin-FM/Balance.out")
a <- grep("[T]", x, value = T)
b <- grep("Time", a , value = T)
c <- b[-c(1,2)]
d <- grep("WatBalR", x, value = T)
数据是这样的
data <- data.frame(time =c, watbalr = d)
> data
time watbalr
1 Time [T] 3.0000 WatBalR [%] 0.040
2 Time [T] 6.0000 WatBalR [%] 0.024
3 Time [T] 9.0000 WatBalR [%] 0.044
4 Time [T] 30.0000 WatBalR [%] 0.034
我检查了数据类,它是下面显示的数据框。
> c
[1] " Time [T] 3.0000" " Time [T] 6.0000"
[3] " Time [T] 9.0000" " Time [T] 30.0000"
> class(c)
[1] "character"
> d
[1] " WatBalR [%] 0.040" " WatBalR [%] 0.024"
[3] " WatBalR [%] 0.044" " WatBalR [%] 0.034"
> class(d)
[1] "character"
> class(data)
[1] "data.frame"
提取所需值的代码如下所示。但它只是将时间的值分配给 0 到 9,任何高于 9 的值都只是重新从 0 到 9 开始。
times <- sub("^.+?(\\d)", "\\1", c)
WatBlaR <- sub("^.+?(\\d)", "\\1", d)
times <- as.numeric(times)
WatBlaR <- as.numeric(WatBlaR)
# plot
plot(x = times, y = WatBlaR)
数据框中上述4个值的结果如下所示。
> times
[1] 3 6 9 0
但时间要求的结果是
3, 6, 9, 30
当我想从日常数据中提取模型数据时,它会将值显示为
> times
0,1,2,3,4,5,6,7,8,9, 0,1,2,3,4,5,6,7,8,9, 0,1,2,3,4,5,6,7,8,9
它只是按照所有可用时间从0到9的顺序,需要的输出应该是这样的
> times
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30
【问题讨论】:
-
欢迎来到 SO:请使用
str(data)确认 data.frame cols 的类型,并使用该信息更新您的答案。 -
> str(data) 'data.frame': 4 obs。 2 个变量:$ 时间:因子 w/4 水平“时间 [T] 3.0000”,..:1 2 3 4 $ watbalr:因子 w/4 水平“WatBalR [%] 0.024”,..:3 1 4 2
-
请检查更新的问题,我提供了详细信息以便于理解数据。