读取文本文件并制作ggplot2频率多边形

时间:2014-05-14 09:13:41

标签: r ggplot2

我有一个txt文件:

[global]
SCRIPT_NAME=performance.vbs
SCRIPT_ISSUER=nova ratio AG
SCRIPT_VERSION_COUNTER=1.0
SYSTEM_NAME=ko-pc-3
datadesc=CPU_user;CPU_sys;CPU_idle;CPU_wait;CSW_cswch_s;PROC_plst_sz;PROC_runqsz;MEM_phys_kB;MEM_ab_kB;MEM_u_pct;MEM_cf_s;MEM_pf_s;MEM_pr_s;MEM_pw_s;NET_count;NET_rxkB_s;NET_tkB_s;NET_txkB_s;NET_rxkB_s_if0001;NET_tkB_s_if0001;NET_txkB_s_if0001;NET_rxkB_s_if0002;NET_tkB_s_if0002;NET_txkB_s_if0002;DISK_p_dr_kB_s;DISK_p_dw_kB_s;DISK_p_adql;DISK_p_dt;DISK_p_cdql;DISK_p_dr_s;DISK_p_dr_s;DISK_p_it;DISK_p_adwql;
[data]
1386716402=U;U;U;U;U;31;4;8255744;782728;U;U;U;U;U;2;0;0;0;U;U;U;U;U;U;U;U;U;U;0;U;U;U;U;
1386716702=0;0.06;99.95;0.02;91.93;29;3;8255744;785120;U;0.02;0.58;0;0;2;0.30;0.31;0.01;0.30;0.31;0.01;0;0;0;0;5.82;0.01;0.04;0;0;1.01;100.24;0.01;
1386717002=0.01;0.04;99.97;0.03;19.46;29;1;8255744;785200;U;0;0.04;0;0;2;0.07;0.07;0.01;0.07;0.07;0.01;0;0;0;0;0.75;0.01;0.03;0;0;0.13;501.27;0.01;
1386717302=0.01;0.05;99.96;0.04;92.54;29;1;8255744;785380;U;0.02;0.21;0;0;2;0.32;0.33;0.02;0.32;0.33;0.02;0;0;0;0;3.68;0.01;0.03;0;0;0.60;100.25;0.01;
1386717602=0;0.04;99.97;0.04;U;29;1;8255744;785416;U;U;U;U;U;2;0;0;0;U;U;U;U;U;U;U;U;0.01;0.03;0;U;U;U;0.01;
1386717902=0;0.05;99.96;0.02;99.86;29;2;8255744;785392;U;0;0.23;0;0;2;0.48;0.50;0.02;0.48;0.50;0.02;0;0;0;0;3.67;0.01;0.03;0;0;0.60;100.25;0.01;
1386718202=0;0.03;99.98;0.02;18.32;29;1;8255744;785368;U;0;0.05;0;0;2;0.06;0.06;0.01;0.06;0.06;0.01;0;0;0;0;0.74;0.01;0.03;0;0;0.12;501.27;0.01;
1386718502=0;0.03;99.98;0.02;88.80;29;1;8255744;785436;U;0.01;0.22;0;0;2;0.30;0.31;0.01;0.30;0.31;0.01;0;0;0;0;3.66;0.01;0.03;0;0;0.60;100.26;0.01;
1386718802=0.01;0.04;99.96;0.03;U;29;2;8255744;785332;U;U;U;U;U;2;0;0;0;U;U;U;U;U;U;U;U;0.01;0.03;0;U;U;U;0.01;
1386719102=0;0.04;99.97;0.02;93.37;29;1;8255744;785444;U;0;0.24;0;0;2;0.31;0.32;0.01;0.31;0.32;0.01;0;0;0;0;3.63;0.01;0.03;0;0;0.59;100.25;0.01;

我想阅读并制作Frequency polygon plot

我尝试使用read.fwf,但它不起作用。我是R的新手,我感谢你的帮助=)

1 个答案:

答案 0 :(得分:1)

你应该学习细致的扫描功能。这是读取非二进制文件的最快方法。类型:

?scan

在你的情况下,它会是这样的:

# extract colnames
colNames <- scan(file        = "data.csv",
                 skip        = 5,
                 nlines      = 1,
                 what        = character(),
                 sep         = ";")
# clean first record
colNames[1] <- sub("^[^=]*=", "", colNames[1])
colNames

然后获取数据:

# Extract Data
mydata <- matrix(scan(file        = "data.csv",
                      skip        = 7,
                      what        = character(),
                      na.strings  = "U",
                      sep         = ";"),
                 ncol   = length(colNames),
                 byrow  = TRUE)
#
# clean first record
mydata[,1] <- sapply(mydata[,1], function(x) sub("^[^=]*=", "",x))
# transform the first "U" into NA
mydata[,1] <- ifelse(mydata[,1] == "U", NA, mydata[,1])
# transform data into numeric
mydata <- matrix(as.numeric(mydata),
                 ncol   = length(colNames),
                 byrow  = TRUE)
# add column names
colnames(mydata) <- colNames
head(mydata)

然后你必须弄清楚如何绘制多边形