有没有办法从表函数中获得不同的计数

时间:2019-10-02 12:45:00

标签: r

下面是数据帧df。

ds
  a b
1 a f
2 a d
3 b g
4 b g

当我尝试使用table(ds$b,ds$a)时,我会得到

    a b
  d 1 0
  f 1 0
  g 0 2

但是我只需要像下面这样

    a b
  d 1 0
  f 1 0
  g 0 1

是否可以通过表函数获取它

3 个答案:

答案 0 :(得分:2)

您可以使用pmin在0到1之间设置范围。

pmin(table(ds$b,ds$a), 1)
#    a b
#  d 1 0
#  f 1 0
#  g 0 1

或在unique之前使用table

table(unique(ds)[2:1])
#b   a b
#  d 1 0
#  f 1 0
#  g 0 1

数据:

ds  <- data.frame(a=c("a","a","b","b"), b=c("f","d","g","g"))

答案 1 :(得分:2)

至少一种方法是:

ifelse(table(ds$b,ds$a) > 0, 1, 0)
    a b
  d 1 0
  f 1 0
  g 0 1

答案 2 :(得分:1)

使用tidyverse

library(dplyr)
library(tidyr)
ds %>% 
  distinct %>%
  mutate(n = 1) %>% 
  pivot_wider(names_from = b, values_from = n, values_fill = list(n = 0))
# A tibble: 2 x 4
#  a         f     d     g
#  <fct> <dbl> <dbl> <dbl>
#1 a         1     1     0
#2 b         0     0     1