gpt4 book ai didi

R 将 对转换为 data.frame

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

在 R 中,我有两个像这样的向量:

x <- c("A=5", "B=1",        "D=1", "E=1", "F=2", "G=1")
y <- c("A=2", "B=1", "C=3", "D=1", "H=4")

我想将其转换为这样的 data.frame:
  A B C D E F G H
x 5 1 0 1 1 2 1 0
y 2 1 3 1 0 0 0 4

x 或 y 中包含的所有键都应构成列,未出现在 x 或 y 中的键应添加零值。

最佳答案

这是一种基于环境的方法。制作单独的环境,在其中评估 name=val 对。然后合并它们:

xe <- new.env()
ye <- new.env()
with(xe, eval(parse(text=x)))
with(ye, eval(parse(text=y)))
# > ls(env=ye)
# [1] "A" "B" "C" "D" "H"
# edit as. list makes even more compact!
df1 <- merge(as.list(xe), as.list(ye), all=TRUE, sort=FALSE)
# sort keeps row order with x on top!
A B D E F G C H
1 5 1 1 1 2 1 NA NA
2 2 1 1 NA NA NA 3 4

df1[is.na(df1)] <- 0
df1
A B D E F G C H
1 2 1 1 0 0 0 3 4
2 5 1 1 1 2 1 0 0

使用 reshape::rbind.fill 方法解决了两个参数相等导致丢失一行的问题。
df1 <- rbind.fill(as.data.frame(as.list(xe)), as.data.frame(as.list(ye)) )

关于R 将 <key, val> 对转换为 data.frame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8127869/

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