gpt4 book ai didi

reshape 数据框以将因子转换为 R 中的列

转载 作者:行者123 更新时间:2023-12-03 20:29:17 31 4
gpt4 key购买 nike

我有一个数据框,其中一个特定列具有一组特定值(例如,1、2、...、23)。我想做的是将这种布局转换为一种,其中框架将有额外的 23 列(在这种情况下),每列代表一个因子值。这些列中的数据将是 bool 值,指示特定行是否具有给定的因子值...显示一个具体示例:

源框架:

ID       DATE         SECTOR
123 2008-01-01 1
456 2008-01-01 3
789 2008-01-02 5
... <more records with SECTOR values from 1 to 5>

所需格式:
ID       DATE         SECTOR.1   SECTOR.2   SECTOR.3   SECTOR.4   SECTOR.5
123 2008-01-01 T F F F F
456 2008-01-01 F F T F F
789 2008-01-02 F F F F T

我在循环中这样做没有问题,但我希望会有更好的方法。到目前为止 reshape() 没有产生预期的结果。帮助将不胜感激。

最佳答案

我会尝试绑定(bind)另一个名为“value”的列并设置 value = TRUE .

df <- data.frame(cbind(1:10, 2:11, 1:3))
colnames(df) <- c("ID","DATE","SECTOR")
df <- data.frame(df, value=TRUE)

然后做一个 reshape :
reshape(df, idvar=c("ID","DATE"), timevar="SECTOR", direction="wide")

使用 reshape 的问题功能是缺失值的默认值为 NA(在这种情况下,您将不得不迭代并用 FALSE 替换它们)。

否则你可以使用 castreshape包( see this question for an example ),并将默认设置为 FALSE .
df.wide <- cast(df, ID + DATE ~ SECTOR, fill=FALSE)
> df.wide
ID DATE 1 2 3
1 1 2 TRUE FALSE FALSE
2 2 3 FALSE TRUE FALSE
3 3 4 FALSE FALSE TRUE
4 4 5 TRUE FALSE FALSE
5 5 6 FALSE TRUE FALSE
6 6 7 FALSE FALSE TRUE
7 7 8 TRUE FALSE FALSE
8 8 9 FALSE TRUE FALSE
9 9 10 FALSE FALSE TRUE
10 10 11 TRUE FALSE FALSE

关于 reshape 数据框以将因子转换为 R 中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2404085/

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