从excel读取数据后将数据分离到列中

时间:2013-10-28 07:18:22

标签: r excel

我的格式为

的excel数据
 SessionIDSourceIPDestinationIP
 206192.67.36.714182.79.86.214
 206191.73.38.756182.89.86.214

通过在Excel中将文本应用于文档,我可以将数据分隔为

 Session ID     Source IP       Destination IP
   206        192.67.36.714       182.79.86.214
   206        191.73.38.756       182.89.86.214

在R试图读取上面的数据,但我无法按上述方式单独列。

我该怎么办?

2 个答案:

答案 0 :(得分:0)

您可以尝试使用read.fwf来阅读它,以便您指定列宽。

df <- read.fwf("youcsvfile.csv", widths=c(3,13,13),skip = 2)
colnames(df) <- c("Session ID","Source IP","Destination IP")

答案 1 :(得分:0)

根据源数据的布局方式(IP编号中是否总是有3.2.2.3位数?),您可能希望使用正则表达式来分割数据:

# Load your data without the header line:
x=read.csv('mydata.txt', stringsAsFactors=FALSE, header=FALSE)

# set up regex to capture groups. 
# (Being a bit conservative in case of three digits in middle values.)
rex='^(\\d{3})(.+\\.\\d{3})(\\d{3}\\..+)$'

# Extract data to get subset of each captured match
df <- data.frame(SessionID=gsub(rex,"\\1",x$V1), SourceIP=gsub(rex,"\\2",x$V1),DestinationIP=gsub(rex,"\\3",x$V1))