[英]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.