【问题标题】:Frequencies in R using plyr使用 plyr 在 R 中的频率
【发布时间】:2016-05-05 03:46:26
【问题描述】:

在我的数据中,我有一个名为性别的分类变量,它由男性或女性两种类型组成。我想获得他们的计数和百分比。

比如数据是这样的:

Gender
M
F
M
F

我希望输出类似于:

Gender  Count  Percentage
M        200      50%
F        200      50%

我尝试这样做是为了给我百分比,但它一直给我一个错误,说“找不到对象女性”。目前我已经尝试过:

summarise(BirthData, "Frequencies"= count(BirthData,Gender), 
"Percent" = count(BirthData,Gender)/ sum(count(BirthData,Gender)))

我做错了什么?

【问题讨论】:

  • 我认为count 不能在summarise 中使用。它必须是一个独立的函数。
  • library(dplyr) ; df %>% group_by(Gender) %>% summarise(Count = n(), Percent = n()/nrow(df)*100)

标签: r plyr summarization


【解决方案1】:

我们可以使用tableprop.table

t1 <- table(df1$Gender)
prop.table(t1)

或者如果我们需要指定格式的data.frame

transform(setNames(as.data.frame(table(df1$Gender)), c("Gender", 
          "Count")), Percentage = paste0(100*Count/sum(Count), "%"))
# Gender Count Percentage
#1    F   188       47%
#2    M   212       53%

数据

set.seed(49)
df1 <- data.frame(Gender = sample(c("M", "F"), 400, replace=TRUE), 
  stringsAsFactors=FALSE)

【讨论】:

  • 我试过这样做,但它给了我错误: FUN(X[[i]], ...) 中的错误:仅在具有所有数字变量的数据帧上定义。我不知道为什么它说数字..如何更改数据类型?
  • @KonfuChicken 我更新了一个我使用的工作示例。
  • 成功了!谢谢!我将如何更改 Gender 的变量名称?它似乎在字符串 Male 和 Female 上方显示“Var1”。
  • @KonfuChicken 我们可以使用setNames(更新帖子)
猜你喜欢
  • 2013-03-13
  • 1970-01-01
  • 2012-08-18
  • 2012-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-09
相关资源
最近更新 更多