Нужно выполнить n-грамм на наборе данных - PullRequest
0 голосов
/ 22 сентября 2018

Мне нужно выполнить n-грамм на указанном ниже наборе данных.

Column 1

Electronic, socket, clamp, cooler

Actuator, cylinder, valve

Hydraulic, electronic, cooler

Actuator, Pnematic, cylinder, valve

Мне нужен вывод, как показано ниже,

Column 1

Electronic_socket, socket_clamp, clamp_cooler

Actuator_cylinder, cylinder_valve

Hydraulic_electronic, electronic_cooler

Actuator_Pneumatic, Pneumatic_cylinder, cylinder_valve

1 Ответ

0 голосов
/ 22 сентября 2018

Делая пример, предполагая, что ваши данные находятся в column_1 файла data.frame, следующие должны создать ваши n-граммы, используя базовую R:

# build original data as a data.frame with 1 column
df <- data.frame( column_1 = 
                     c("Electronic, socket, clamp, cooler",
                       "Actuator, cylinder, valve",
                       "Hydraulic, electronic, cooler",
                       "Actuator, Pnematic, cylinder, valve"), 
                  stringsAsFactors=FALSE)

 lov <- strsplit(df$column_1, ', ', fixed=TRUE)

 sapply(lov, function(x){paste0(x[ -length(x) ], '_', x[-1])})

Результат:

[[1]]
[1] "Electronic_socket" "socket_clamp"      "clamp_cooler"     

[[2]]
[1] "Actuator_cylinder" "cylinder_valve"   

[[3]]
[1] "Hydraulic_electronic" "electronic_cooler"   

[[4]]
[1] "Actuator_Pnematic" "Pnematic_cylinder" "cylinder_valve"   

Объяснение этого решения:

Подумайте о том, чтобы сначала иметь дело только с одной строкой за раз, например, если у вас есть слова из одной строки уже в векторе:

    x <- c("Electronic", "socket", "clamp", "cooler")

Ваш желаемый результат: Electronic_socket, socket_clamp, clamp_cooler

x[ -length(x) ]  #gives you all but the last word
# [1] "Electronic" "socket"     "clamp"     

x[-1]  #gives you everything except the first word
# [1] "socket" "clamp"  "cooler"

#paste them together with a "_" between yields your desired output for that line
paste0( x[ -length(x) ], '_', x[-1] )
# [1] "Electronic_socket" "socket_clamp"      "clamp_cooler"     
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...