【问题标题】:Counting how often x occures per y and Visualize in R计算每 y 出现 x 的频率并在 R 中可视化
【发布时间】:2020-06-18 00:39:44
【问题描述】:

我想计算我的数据集中的某些东西。我有面板数据,理想情况下想计算每人的活动数量。

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

【问题讨论】:

  • 您是否需要为每个people 计算唯一activity 的数量。像这样df %&gt;% group_by(people) %&gt;% summarise(no_activity = n_distinct(activity)) ?你能展示你的预期输出吗?
  • @Ronak Shah,我想要这样的输出:person 4 freq activity 2
  • SO 不是写代码的网站,到目前为止你尝试过什么?
  • @Bruno 抱歉,我会更新我尝试过的内容,只是没有任何结果,对此感到抱歉
  • @s_t 听起来很聪明,直方图最终看起来不可读

标签: r count histogram


【解决方案1】:

像这样?

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

如果您只想要“活动”任务,或者像这样:

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

【讨论】:

  • 哇,谢谢你,这是一个非常有用的代码行,我不知何故无法创建。一个问题,是否可以区分任务和独特的任务?在这种情况下,在第一种情况下,我们将为用户 1 提供一个活动
  • 我得到了 n 只适用于数据上下文的错误
  • summarise 替换为dplyr::summarise(如果这不起作用,则在管道中的所有其他函数调用之前放置dplyr::
  • 绘图:在summarise 之后添加:%>% ggplot(aes(x = as.factor(people), y = "频率活动")) + geom_col()。查看整个输出:在summarise之后添加%&gt;% View()
  • 谢谢你,我真的需要这个,我保证这会得到很多用处!
【解决方案2】:

@Dominik.S.Meier

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

我试过这个代码

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

df<- -c (df$nevercompleted)

【讨论】:

  • @Dominik.S.Meier 有什么想法吗?
  • 如果不是问题的答案,请不要将其添加为答案。如果您有任何问题,请作为新问题提出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多