Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 按组计算因子的出现次数_R_Dplyr - Fatal编程技术网

R 按组计算因子的出现次数

R 按组计算因子的出现次数,r,dplyr,R,Dplyr,我正在处理一些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

我正在处理一些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"
RatioAb%
分组依据(CodePR,TSP)%>%
总结(
n=n(),
比率=计数(StatutSP,'1')/计数(StatutSP)
)
总结内容中出错(.data,dots):
评估错误:
没有适用于类的对象的“分组方式”的方法
“逻辑的”
我如何解决这个问题?

df%>%
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
分组人(代码公共关系)%>% 总结(计数=n() ,比率=平均值(状态(SP)) ##一个tibble:2x3 #代码计数比率 # #1 PR1 3 0.333 #2 PR2 0.500
谢谢!但是我仍然会遇到这样的错误“错误:不应该直接调用此函数”错误指的是哪个函数?你的R环境一定有问题。没错,我重新启动了我的R会话,但现在我的平均值只有NA:。默认值(stateTSP):参数不是数字或逻辑的:返回NA'哦,是的,你不能取非数字(或逻辑)向量的平均值。在取平均值之前,先找出一种方法使其数值化。如果数字被编码为一个因子,则需要在其上使用
as.numeric(as.character(x))
,而不仅仅是
as.numeric
Dataset %>% 
  group_by(Code_PR) %>% 
  summarise(Count = n(), Ratio = paste0(sum(Status_SP),"/",n()))