按组计算因子出现次数

3

我正在处理一些dplyr问题。我想创建一个新变量,它是因子水平的频率,但我想按组来做。这是我的数据摘录:

head(Dataset)
Code_PR   Code_SP  Status_SP
  PR1        SP1       0
  PR1        SP2       0
  PR1        SP3       1
  PR2        SP1       0
  PR2        SP2       1

我希望能得到以下结果:
Code_PR   Count  Ratio
  PR1      3       1/3 
  PR2      2       1/2

我尝试了以下代码,并进行了修改,但总是得到相同的错误提示:
RatioAb <-  Database_V2  %>%
group_by(CodePR, StatutSP) %>%
summarize(
n=n(),
Ratio =count(StatutSP, '1')/count(StatutSP)
)
Error in summarise_impl(.data, dots) : 
Evaluation error:
no applicable method for 'group_by_' applied to an object of class 
"logical"

我该怎么修复这个问题?
2个回答

2
df %>% 
  group_by(Code_PR) %>% 
  summarise(Count = n()
            , Ratio = mean(Status_SP))

## A tibble: 2 x 3
#   Code_PR Count Ratio
#   <chr>   <int> <dbl>
# 1 PR1         3 0.333
# 2 PR2         2 0.500

谢谢!但是我仍然遇到了一个错误,尝试这样做时出现了"错误:不应直接调用此函数"。 - undefined
1
这个错误是指哪个函数?可能是你的 R 环境出了问题。 - undefined
确切地说,我重新启动了我的R会话,但现在我只得到NA:'在mean.default(StatutSP)中:参数不是数字或逻辑值:返回NA'。 - undefined
2
哦,是的,你不能对非数字(或逻辑)向量取平均值。找到一种方法,在取平均值之前将其转换为数字。 - undefined
1
如果数字被编码为因子,你需要使用 as.numeric(as.character(x)) 而不仅仅是 as.numeric - undefined
显示剩余2条评论

1
Dataset %>% 
  group_by(Code_PR) %>% 
  summarise(Count = n(), Ratio = paste0(sum(Status_SP),"/",n()))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接