【发布时间】:2019-10-16 11:53:43
【问题描述】:
所以,我上次在数据帧上使用了 dcast(),其中一列为 ID,其他多个代码分配给每个 ID。我的 df1 看起来像这样:
ID codes gfreq
123 FGV34 0.988
123 FGV34 0.988
123 FGV34 0.988
566 WER45 na
566 FGV34 0.988
566 FGV34 0.988
为了把上面的格式操作成:
ID FGV34 WER45
123 1 0
566 1 1
dcast(df1, ID ~ codes)
而且效果很好。 现在,我有一个类似的数据框 df2,它只有两列,ID 和代码。
ID codes
123 FGV34
123 FGV34
123 FGV34
566 WER45
566 FGV34
566 FGV34
当我在 dcast 中运行它时: 1. 我收到关于 Value.var 被覆盖并且代码列用作 value.var 的警告,这没关系 2. 这次我得到的输出格式完全不同了。
ID FGV34 WER45
123 FGV34 NA
566 FGV34 WER45
我已经检查了 df1 和 df2 中属性的数据类型。对于 ID 和代码,它们是相同的。 我需要帮助来获得像以前一样的输出,使用 0 或 1 而不是 NA 和列名。 其次,我想了解 dcast() 的行为发生了哪些变化。
【问题讨论】:
-
tidr和dplyr解决方案可能会有所帮助。试试这个df %>% filter(!is.na(Codes)) %>% spread(Codes, ID) -
不,我认为它要求列没有任何重复值。但在我的情况下,ID 重复..
-
你有你的数据框吗,我刚刚测试了一个重复,它可以工作。
-
不走运。以下是我得到的错误。“错误:每行输出必须由唯一的键组合标识。键共享 61 行:”
-
您可能在
Codes中重复。
标签: r rstudio reshape reshape2 dcast