gpt4 book ai didi

r - 如何拆分 R 中的列?

转载 作者:行者123 更新时间:2023-12-01 23:42:36 24 4
gpt4 key购买 nike

我也想用同样的方式拆分同一列。我想按照以下方式执行此操作,但它无法正常工作。

我使用的代码是 t38kbat = read.table("test38kbat.txt", header = FALSE)
head(t38kbat)

t38kbat <- separate (t38kbat, V2, c("sp", "id", "gene_organism"), \\"|")
t38kbat <- separate (t38kbat, gene_organism, c("gene", "organism"), \\"_")
t38kbat <- unite (t38kbat, sp, sp, id, sep = "|")

当我运行脚本时我收到了错误

错误:“t38kbat <- separate (t38kbat, V2, c("sp", "id", "gene_organism"),\"中的意外输入

谁能指导我如何解决它。谢谢

最佳答案

在基础 R 中,strsplit 命令将对这种形式的向量进行操作,但会生成一个列表,您必须进一步简化它。

tidyr 包中,有一个 separate 函数可以保留事物的数据帧性质。对于此用例,这可能更可取。

例如

> library(tidyr)
> a <- data.frame(x=1:3, y=c("a|b|c", "b|c|d", "d|e|f"))
> a
x y
1 1 a|b|c
2 2 b|c|d
3 3 d|e|f
> separate(a, y, c("a","b","c"), '\\|')
x a b c
1 1 a b c
2 2 b c d
3 3 d e f

要稍微充实 strsplit 解决方案,您将不得不使用有点笨拙的 cbinds 组合来实现

> cbind(a, do.call(cbind, strsplit(as.character(a$y), "\\|")))
x y 1 2 3
1 1 a|b|c a b d
2 2 b|c|d b c e
3 3 d|e|f c d f

编辑:还应该注意,如果您使用 tidyr 方法,您将不得不递归地使用它,可能与 unite 一起使用,以获得完整的行为。有点像

df <- separate(df, col, c("type", "subtype", "rawclass"), "\\|")
df <- separate(df, rawclass, c("class", "subclass"), "_")
df <- unite(df, sp, type, subtype, sep="|")

假设原始列名为 col,并使用虚构的名称作为最终标题。

关于r - 如何拆分 R 中的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32099467/

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