簡體   English   中英

R:按列中的值分組並對每個值進行計數

[英]R: Group by values in a column and count each value

我有一個簡單的數據框。 元素是個人,變量是活動,值是每個人是否完成了活動。

df1 <- data.frame (student = c (1, 2, 3, 4, 5, 6),
               budget= c("in progress", "not started", "completed", "not started", "not started", "in progress"),
               resume = c ("not started", "completed", "completed", "not started", "completed", "in progress"),
               cover = c("completed", "not started", "not started", "not started", "in progress", "in progress"))

我想創建一個表,其中行是“已完成”、“進行中”和“未開始”,列是活動(“預算”、“簡歷”和“封面”),值是計算每個。

我試過使用“group_by”function。

dt1 <- df1 %>% 
  group_by (budget, resume, cover) %>% 
  summarise(freq = n())

但這似乎是在計算值的組合。

我最終想要的是一張看起來像的桌子

df2 <- data.frame (progress = c("completed", "in progress", "not started"),
                   budget = c(1, 2, 3),
                   resume = c(3, 1, 2),
                   cover = c(1, 2, 3))

任何和所有的反饋都表示贊賞。 謝謝你。

tidyverse ,您可以將數據重塑為長格式、 count並重塑為寬格式。

library(dplyr)
library(tidyr)

df1 %>%
  pivot_longer(cols = -student) %>%
  count(name, value) %>%
  pivot_wider(names_from = name, values_from = n)

但是,我認為在這種情況下,基本 R 更容易 -

sapply(df1[-1], table)

#            budget resume cover
#completed        1      3     1
#in progress      2      1     2
#not started      3      2     3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM