从数据框创建矩阵,并根据行填充列数

时间:2020-07-08 16:40:55

标签: r dataframe matrix count

假设我具有以下数据框:

df <- data.frame(teams=c("A", "A", "C", "C", "D", "D"), 
             country=c("Italy","Italy","Italy","Italy", "India","India"),
             players=c("ac","bd","fg","ji","ki","yr"), 
             stringsAsFactors = FALSE)

我要创建一个矩阵,如下所示:

enter image description here

基本上,“团队”和“国家”应该分别是矩阵的行和列,并且值应该是球员名称的计数。

有人可以告诉我如何在R中做到这一点吗?

谢谢

2 个答案:

答案 0 :(得分:0)

使用dplyr和tidyr:

library(dplyr)
library(tidyr)

df %>% 
  count(teams, country) %>% 
  pivot_wider(names_from = country, 
              values_from = n, 
              values_fill = list(n = 0))

# A tibble: 3 x 3
  teams Italy India
  <chr> <int> <int>
1 A         2     0
2 C         2     0
3 D         0     2

答案 1 :(得分:0)

as.matrix(table(df$teams, df$country))
  #   India Italy
  # A     0     2
  # C     0     2
  # D     2     0

# If order matters
df$country <- factor(df$country, levels=c("Italy", "India"))
as.matrix(table(df$teams, df$country))
  #   Italy India
  # A     2     0
  # C     2     0
  # D     0     2