Я новичок в R и последние 2 месяца провел на этом веб-сайте, пытаясь узнать больше. Я хочу получить информацию из набора данных, в котором есть ключевое слово c, а затем из тех, в которых оно есть, я хочу извлечь 5 слов до и после этого ключевого слова. Затем я хочу знать, какой номер (а) рядом с ними в том же предложении.
Чтобы объяснить «Почему», у меня есть список билетов, я хочу вытащить все названия билетов. Затем я хочу узнать из этого списка тех билетов, которые запрашивают дополнительное хранилище. Если да, то я хочу знать, сколько памяти они просят, и позже я создам действия в зависимости от того, сколько памяти они просят (но это позже).
Пример кода Я закончил (это немного беспорядочно, я все еще работаю над лучшим / более чистым способом, я новичок в R).
Ключевое слово, которое я ищу: Storage
Dataframe, обозначенный как: DF, DF2, DF3 et c.
Столбец из DF: Заголовок
#Check for keyword#
grep("storage", DF$Title, ignore.case=true)
#Pull words before and after keywords, this is case sensitive for some reason so I have to do it twice and merge the data frames, it also creates a list instead of a data frame so I have to change that into a data frame...Messy I know#
DF2 <- stringr::str_extract_all(DF$Title, "([^\\s]+\\s){0,5}Storage(\\s[^\\s]+){0,5}")
#Turn list into dataframe#
DF3 <- do.call(rbind.data.frame, DF2)
#Pull words before and after but in lower case, same as step two#
DF4 <- stringr::str_extract_all(DF$Title, "([^\\s]+\\s){0,5}storage(\\s[^\\s]+){0,5}")
#Turn list into dataframe#
DF5 <- do.call(rbind.data.frame, DF4)
#Change column names ( I have to do this to merge them via rbind)
DF6 <- setnames(DF3, c("Keyword")
DF7 <- setnames(DF5, c("Keyword")
#Merge both data frames together#
DF6 <- rbind(DF6,Df7)
Я хочу проверить запрошенный объем памяти, поэтому я ' м пытаюсь найти номер, относящийся к ГБ или ТБ, и т. д. c. Я пробовал множество кодов, но многие вытаскивают только числа или числа сразу после ключевого слова, а не все числа в предложении.
Пример того, что я пробовал с ним, не работает
DFTest <- as.integer(str_match(DF6, "(?i\\bGB:?\\s*(\\d+")[,2])