相关疑难解决方法(0)

在data.table列中拆分文本字符串

我有一个脚本,将CSV文件中的数据读入a data.table,然后将一列中的文本拆分为几个新列.我目前正在使用lapplystrsplit函数来执行此操作.这是一个例子:

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)

在上面的示例中,该列 …

r data.table

72
推荐指数
4
解决办法
5万
查看次数

strsplit by row并按data.frame中的列分配结果

所以我有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)

r strsplit data.table

9
推荐指数
3
解决办法
6299
查看次数

标签 统计

data.table ×2

r ×2

strsplit ×1