下面的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"
答案 0 :(得分:0)
这是一种至少应该帮助您入门的方法:
我们可以使用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
的第一列(也是唯一列)。视需要进行更改。