Мы могли бы сделать это за base R
.Используйте маршрут matrix
, чтобы переставить вектор / столбец в matrix
, а затем преобразовать его в data.frame
(as.data.frame
).Поскольку число столбцов является постоянным, т. Е. 2, укажите это значение в ncol
as.data.frame(matrix(df$text, ncol = 2, byrow = TRUE,
dimnames = list(NULL, c('text1', 'text2'))))
# text1 text2
#1 abc def
#2 abc def
Или другой параметр - unstack
из base R
после создания последовательности альтернативных идентификаторов (используяпереработка)
unstack(transform(df, val = paste0('text', 1:2)), text ~ val)
# text1 text2
#1 abc def
#2 abc def
Или мы можем split
в list
из vector
с, а затем cbind
это вместе
as.data.frame(do.call(cbind, split(as.character(df$text), 1:2)))
# 1 2
#1 abc def
#2 abc def
Или другой вариант - dcast
из data.table
library(data.table)
dcast(setDT(df), rowid(text)~ text)[, text := NULL][]
data
df <- data.frame(text = c("abc","def","abc","def"))