r - 一列中的每个不同项目中有多少分配给另一列中的每个不同项目?

标签 r dataframe dplyr tidyverse

我正在尝试使用 dplyr 函数 group_by()summarize(), count() 但是我想不通怎么办:

每种颜色分配给每个 id 的数量是多少?即:id = 2 有 1 个 b 和 1 个 r。 id 3 只有 1 个 r ,...

df = data.frame(color = c("b","r","r","g","y","y","r"), id = c(2,3,2,6,4,4,7))


df %>%
  group_by(id) %>%
  summarize(count = n_distinct(color))

有没有明确的方法可以做到这一点?我会考虑创建假人,但我的真实数据集非常大,然后我想知道是否有一种简洁、漂亮的编码风格。感谢您的任何建议。

输出:

  color id_2 id_3 id_4 id_6 id_7
1     b    1    0    0    0    0
2     g    0    0    0    1    0
3     r    1    1    0    0    1
4     y    0    0    2    0    0

最佳答案

您只是在寻找:

df %>%
  group_by(id) %>%
  count(color)

?

# A tibble: 6 x 3
# Groups:   id [5]
     id color     n
  <dbl> <chr> <int>
1     2 b         1
2     2 r         1
3     3 r         1
4     4 y         2
5     6 g         1
6     7 r         1

或者,如果您希望将 ID 作为列:

df %>%
  group_by(id) %>%
  count(color) %>%
  pivot_wider(names_from = id,
              names_prefix = 'id_',
              values_from = n,
              values_fill = 0) %>%
  arrange(color)

# A tibble: 4 x 6
  color  id_2  id_3  id_4  id_6  id_7
  <chr> <int> <int> <int> <int> <int>
1 b         1     0     0     0     0
2 g         0     0     0     1     0
3 r         1     1     0     0     1
4 y         0     0     2     0     0

关于r - 一列中的每个不同项目中有多少分配给另一列中的每个不同项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71609900/

相关文章:

python - pandas 数据框中两个变量的线性回归

使用 dplyr 删除列

r - dplyr group_by - 混合带或不带引号的变量名称

r - 如何创建带有彩色分支的树状图?

r - 使用 native 管道 |> 在 base R 中选择多列的方法?

r - 在 R 中快速计算字符串中的数字

python - 如何计算 Python 数据框中特定单元格的平均值?

python - 替换多个值并为多个数据帧创建新列的优雅方法

regex - 将正则表达式与文字字符串结合

r - 如何计算堆叠条形图中的百分比?