我有一个脚本,将CSV文件中的数据读入a data.table,然后将一列中的文本拆分为几个新列.我目前正在使用lapply和strsplit函数来执行此操作.这是一个例子:
library("data.table")
df = data.table(PREFIX = c("A_B","A_C","A_D","B_A","B_C","B_D"),
VALUE = 1:6)
dt = as.data.table(df)
# split PREFIX into new columns
dt$PX = as.character(lapply(strsplit(as.character(dt$PREFIX), split="_"), "[", 1))
dt$PY = as.character(lapply(strsplit(as.character(dt$PREFIX), split="_"), "[", 2))
dt
# PREFIX VALUE PX PY
# 1: A_B 1 A B
# 2: A_C 2 A C
# 3: A_D 3 A D
# 4: B_A 4 B A
# 5: B_C 5 B C
# 6: B_D 6 B D
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,该列 …
所以我有data.frame
dat = data.frame(x = c('Sir Lancelot the Brave', 'King Arthur',
'The Black Knight', 'The Rabbit'), stringsAsFactors=F)
> dat
x
1 Sir Lancelot the Brave
2 King Arthur
3 The Black Knight
4 The Rabbit
Run Code Online (Sandbox Code Playgroud)
我想将其转换为数据框架
> dat2
x 1 2 3 4
1 Sir Lancelot the Brave Sir Lancelot the Brave
2 King Arthur King Arthur
3 The Black Knight The Black Knight
4 The Rabbit The Rabbit
Run Code Online (Sandbox Code Playgroud)
strsplit将数据作为列表返回
sbt <- strsplit(dat$x, " ")
> sbt
[[1]]
[1] "Sir" …Run Code Online (Sandbox Code Playgroud)