以下是我需要分析的数据片段:
2014 log[1]: id="1" sys="Sec" sub="fill" severity="inf" dort="30"
2014 log[2]: id="2" sys="Sec" sub="fill" severity="inf" name="dropped"
对不起,如果这是一个显而易见的问题,但这是什么类型的数据,如何将其转换为csv格式进行分析?到目前为止,我已经尝试通过将空格指定为分隔符来使用R,但这并没有得到我所需要的东西:
table1<-read.table('data.txt', sep="", fill=TRUE, header = FALSE)
理想情况下,"id", "sys", "sub", "severity", "dort"
和"name"
将成为列标题。每行包含大约相同数量的变量,但某些行不包含其他行所执行的变量。对于那些实例,我希望有“NULL”。例如:在上面数据的第二行中,在dort
列下我希望它说“NULL”
答案 0 :(得分:0)
希望这有帮助!
id="1" sys="Sec" sub="fill" severity="inf" dort="30"
id="2" sys="Sec" sub="fill" severity="inf" name="dropped"
让我们考虑一下test.txt
上面提到的数据
library(rjson)
library(plyr)
#prepare json data
txt_file <- readLines("test.txt")
json_file <- lapply(txt_file, function(x) paste0('{"', gsub(',', ',"',gsub("=",'":',gsub('"\\s+', '",', gsub("^\\s+|\\s+$","",x)))), '}'))
json_file <- paste0("[", paste(json_file, collapse=","), "]")
#read json data
json_data <- fromJSON(json_file)
#convert it to dataframe
df <- rbind.fill(lapply(json_data,function(y){as.data.frame(t(y),stringsAsFactors=FALSE)}))
df[df=='NULL'] <- NA
df
输出是:
id sys sub severity dort name
1 1 Sec fill inf 30 NA
2 2 Sec fill inf NA dropped