gpt4 book ai didi

r - 如何在 R 中的变量中拆分字符串变量(非矩形)

转载 作者:行者123 更新时间:2023-12-04 12:02:44 26 4
gpt4 key购买 nike

我在数据框中有以下变量

test<-data.frame(x=c("", "1-7-9", "3", "2-4-6-8"))

我想把它拆分成如下变量:

Var1 Var2 Var3 Var4
NA NA NA NA
1 7 9
3 NA NA NA
2 4 6 8

我试过了

 test2<-strsplit(as.character(vartest$x), "\\-")  

但我得到的是列表而不是数据框

请帮帮我

最佳答案

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

备注:data.table dev version 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

这些都返回数据表,可以通过分配结果然后使用 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

关于r - 如何在 R 中的变量中拆分字符串变量(非矩形),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29268941/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com