df table(df) y-6ren">
gpt4 book ai didi

r - table() 行全为零

转载 作者:行者123 更新时间:2023-12-01 09:32:56 24 4
gpt4 key购买 nike

这看起来很简单,但我在任何地方都找不到简单的答案。

如果我们有如下数据并使用table():

df <- data.frame(x=c("a","b","a"),y=c("b","a","c"))

table(df)
y
x a b c
a 0 1 1
b 1 0 0

什么是最简单的获得方式:

   y
x a b c
a 0 1 1
b 1 0 0
C 0 0 0

之后无需手动添加 c 行。

最佳答案

这是一种方法。本质上,您需要确保 xy 都具有相同的级别。我通过计算它们各自 levels()union() 然后 transform() 原始 xy 都有这组共同的级别:

> df <- data.frame(x=c("a","b","a"),y=c("b","a","c"))
> lev <- with(df, sort(union(levels(x), levels(y))))
> lev
[1] "a" "b" "c"
> df <- transform(df, x = factor(x, levels = lev), y = factor(y, levels = lev))
> table(df)
y
x a b c
a 0 1 1
b 1 0 0
c 0 0 0

您的示例有一个简单的解决方案 - 只需给 xy 相同的级别,因为 y 的级别是完整的。在更一般的情况下,xy 都没有完整的级别集,我展示的代码将为您提供完整的集,因此在这两种情况下都适用。

关于r - table() 行全为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13049624/

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