【问题标题】:Build a matrix with an initial dataframe使用初始数据框构建矩阵
【发布时间】:2020-07-28 16:37:34
【问题描述】:

我是 R 新手。 我在这里遇到了一个问题,我有一个带有二进制变量的数据框,如下所示:

我想要一个数据框,它计算每一行的出现次数(这里是我想要的输出):

【问题讨论】:

  • 欢迎来到 Stack Overflow!比提供数据图像更可取的是edit您的问题包括相同的信息,但作为纯文本(最好在代码块中)。您可以通过 R 命令 dput(your_data) 获取此信息(将 your_data 替换为数据框的实际名称);然后您可以简单地复制并粘贴该命令的输出。这是其他人查看和使用您的数据以帮助您找到解决方案的一种简便方法。

标签: r dataframe matrix


【解决方案1】:

为了将来参考,您应该按照我上面的评论中的描述提供您的数据。 但是,由于这个问题很容易解决,数据也很容易生成, 我在这里提供一个解决方案:

dat <- data.frame(Algeria = c(1, 0, 1, 0, 1, 0, 1),
                  France  = c(1, 1, 1, 0, 0, 1, 1),
                  Spain   = c(0, 1, 0, 1, 0, 1, 1),
                  Italy   = c(1, 0, 1, 1, 0, 1, 1))
crossprod(as.matrix(dat))
        Algeria France Spain Italy
Algeria       4      3     1     3
France        3      5     3     4
Spain         1      3     4     3
Italy         3      4     3     5

(R的crossprod(x)t(x) %*% x一样)

我确定我确实在 Stack Overflow 的某个地方看到过这个技巧,但我目前找不到它来标记为重复;如果我或比我更擅长搜索的其他人可以找到要标记的重复项,这可能会在某个时候作为重复项关闭。


您会注意到 Italy 列中的一些条目与您的帖子不一致,但人工检查表明此解决方案是正确的,而不是您发布的图片

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-15
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2021-03-13
    • 2013-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多