如何在DataFrame中拆分文本

如何在DataFrame中拆分文本,r,nlp,R,Nlp,你能帮我把第1列(rawtext)中的数据划界到 第2栏(名称), 第3列(时间戳), 第4栏(演讲稿) 数据如下所示: column 1 column 2 [1] firstname Lastname: 00:01 text text. text. 0 [2] firstname lastname2: 00:0

你能帮我把第1列(rawtext)中的数据划界到

第2栏(名称), 第3列(时间戳), 第4栏(演讲稿)

数据如下所示:


    column 1                                                         column 2
[1] firstname Lastname:           00:01     text text. text.          0
[2] firstname lastname2:          00:008    text, text text.          0

我需要它看起来像

column1                     column 2      colum3

[1] Firstname lastname      00:01         text text. text.
[2] firstname lastname2     00:08         text, text text.

可以使用strsplit和regex一起查找3个以上的空格

#Replication of the dataframe
l1 = "firstname Lastname:           00:01     text text. text.          0"
l2 = "firstname lastname2:          00:008    text, text text.          0"
df = rbind(l1,l2)

# Using strsplit with Regex to find separation with 3 or more spaces.

df2=as.data.frame(matrix(unlist(strsplit(df,"\\s{3,}")),nrow = nrow(df), byrow=T),stringsAsFactors = F)
Strplit生成一个列表,因此有必要取消列表并使用矩阵重新创建数据帧

输出为:

+----------------------+--------+------------------+----+
|          V1          |   V2   |        V3        | V4 |
+----------------------+--------+------------------+----+
| firstname Lastname:  | 00:01  | text text. text. |  0 |
| firstname lastname2: | 00:008 | text, text text. |  0 |
+----------------------+--------+------------------+----+

如果我理解正确,OP有一个data.frame,它的第一列应该被分成三个独立的列。列由4个或更多空格字符分隔

data.table
包具有
tstrsplit()
函数,它是
转置(strsplit(…)
的缩写:

请注意,新列已附加到原始data.frame
df

还请注意,默认情况下,
tstrsplit()
已将
column1
从因子强制转换为字符

资料
可能的副本谢谢!但是,我收到了这个错误:strsplit(df,“\\s{3,}”)中的错误:非字符参数在我的示例中,df是一个字符。在您的示例中,df似乎是一个数据帧,因此在strsplit中,您需要指示您使用的列,例如strplit(df$V1,“\\s{3,}”)
library(data.table)
setDT(df)[, c("name", "timestamp", "speech_text") := tstrsplit(column1, "\\s{4,}")]
df
                                                    column1 column2                 name timestamp      speech_text
1: firstname Lastname:           00:01     text text. text.       0  firstname Lastname:     00:01 text text. text.
2: firstname lastname2:          00:008    text, text text.       0 firstname lastname2:    00:008 text, text text.
df <- data.frame(
  column1 = c("firstname Lastname:           00:01     text text. text.", 
              "firstname lastname2:          00:008    text, text text."),
  column2 = 0)
df
                                                   column1 column2
1 firstname Lastname:           00:01     text text. text.       0
2 firstname lastname2:          00:008    text, text text.       0