计算 x 每 y 出现的频率并在 R 中可视化

Counting how often x occures per y and Visualize in R

我想计算数据集中的某些内容。我有面板数据,理想情况下想计算每个人的活动次数。

people <- c(1,1,1,2,2,3,3,4,4,5,5)
activity <- c(1,1,1,2,2,3,4,5,5,6,6)
completion <- c(0,0,1,0,1,1,1,0,0,0,1)

所以我的输出会告诉我第 4 个人有 2 个任务。

people 1
frequency activity 2

我需要分组吗?理想情况下,我还想将其可视化为直方图。

我试过这个:

> ##activity per person  cllw %>% 
> ## Group observations by people   group_by(id_user) %>% 
> ## count activities per person and i am not sure how to create frequencies at all

像这样?

library(dplyr)
df %>% 
  group_by(people) %>% 
  summarise("frequency activity" = n())

# A tibble: 5 x 2
  people `frequency activity`
   <dbl>                <int>
1      1                    3
2      2                    2
3      3                    2
4      4                    2
5      5                    2

如果您只想要 "active" 个任务,也可以像这样:

df %>% 
  filter(completion != 1) %>% 
  group_by(people) %>% 
  summarise("frequency activity" = n())

# A tibble: 4 x 2
  people `frequency activity`
   <dbl>                <int>
1      1                    2
2      2                    1
3      4                    2
4      5                    1

编辑每个人的独特任务:

df %>% 
  filter(completion != 1) %>% 
  distinct(people, activity) %>% 
  group_by(people) %>%
  summarise("frequency activity" = n())

# A tibble: 4 x 2
  people `frequency activity`
   <dbl>                <int>
1      1                    1
2      2                    1
3      4                    1
4      5                    1

@Dominik.S.Meier

我有一个类似的问题,如果我想从我的 df 中删除所有从未完成任何任务的人,我该怎么办。

我试过这个代码

never completed<- df %>% 
  filter(completion != 0) %>% 
  group_by(people) %>% 
  summarise("frequency activity" = n())

df<- -c (df$nevercompleted)