下面的textsample
在一栏中。我希望使用R将其分为5列,并带有以下标题:“ Name”,“ Location”,“ Date”,“ Time”,“ Warning”。我尝试过separate()
和strsplit()
,但尚未成功。我希望这里有人可以提供帮助。
textsample <- "Name : York-APC-UPS\r\n
Location : York SCATS Zigzag Road\r\n
Contact : Mechanical services\r\n
\r\n
http://York-APC-UPS.domain25.minortracks.wa.gov.au\r\n
http://192.168.70.56\r\n
http://FE81::3C0:B8FF:FE6D:8065\r\n
Serial Number : 5A1149T24253\r\n
Device Serial Number : 5A1149T24253\r\n
Date : 12/06/2018\r\n
Time : 08:45:46\r\n
Code : 0x0125\r\n
\r\n
Warning : A high humidity threshold violation exists for integrated Environmental Monitor TH Sensor
(Port 1 Temp 1 at Port 1) reporting over 50%CD.\r\n"
这里至少应该让您入门:
我们可以使用extract
中的tidyr
提取带有正则表达式的目标文本。
然后我们可以使用mutate_all
施加相同的str_replace
来去除标签。
library(dplyr)
library(tidyr)
library(stringr)
as.data.frame(extsample) %>%
extract(1, into=c("Name","Location","Date","Time","Warning"),
regex = "(Name : .+)[^$]*(Location : .+)[^$]*(Date : .+)[^$]*(Time : .+)[^$]*(Warning : .+)[^$]*") %>%
mutate_all(list(~str_replace(.,"^\\w+ : ","")))
# Name Location Date Time
#1 York-APC-UPS York SCATS Zigzag Road 12/06/2018 08:45:46
# Warning
#1 A high humidity threshold violation exists for integrated Environmental Monitor TH Sensor
这依赖于使用()
捕获组,有关详细信息,请参见help(tidyr::extract)
。我们使用[^$]*
来匹配组之间字符串0或更多次以外的任何其他内容。
注意extract
的第一个参数是1
,它表示我从示例数据中得出的data.frame
的第一列(也是唯一列)。根据需要更改此设置。