Fab*_*Gil 2 string split r dataframe
我在数据帧中有以下变量
test<-data.frame(x=c("", "1-7-9", "3", "2-4-6-8"))
Run Code Online (Sandbox Code Playgroud)
我想在变量中拆分:
Var1 Var2 Var3 Var4
NA NA NA NA
1 7 9
3 NA NA NA
2 4 6 8
Run Code Online (Sandbox Code Playgroud)
我试过了
test2<-strsplit(as.character(vartest$x), "\\-")
Run Code Online (Sandbox Code Playgroud)
但我得到一个列表而不是数据帧
请帮我
library(data.table)
setDT(test)[, tstrsplit(x, "-", type.convert = TRUE, fixed = TRUE)]
# V1 V2 V3 V4
# 1: NA NA NA NA
# 2: 1 7 9 NA
# 3: 3 NA NA NA
# 4: 2 4 6 8
Run Code Online (Sandbox Code Playgroud)
注意:data.table dev版本1.9.5.type.convert字符转换的参数和因子已经在#1094的最新开发版本中实现(感谢Arun!).
要么
splitstackshape::cSplit(test, "x", "-")
# x_1 x_2 x_3 x_4
# 1: NA NA NA NA
# 2: 1 7 9 NA
# 3: 3 NA NA NA
# 4: 2 4 6 8
Run Code Online (Sandbox Code Playgroud)
这两个返回数据表都可以通过分配结果然后使用来转换回数据帧setDF().它们还将数字字符正确转换为分类的"整数"列.
而且只是为了好玩,这是一个很难获得数据框架的方法 scan()
x <- as.character(test$x)
v <- max(vapply(strsplit(x, "-", fixed = TRUE), length, 1L))
s <- scan(text = x, what = as.list(integer(v)), sep = "-", fill = TRUE,
na.strings = "", blank.lines.skip = FALSE)
setNames(data.frame(s), make.names(seq_along(s)))
# X1 X2 X3 X4
# 1 NA NA NA NA
# 2 1 7 9 NA
# 3 3 NA NA NA
# 4 2 4 6 8
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
237 次 |
| 最近记录: |