Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.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_Rate - Fatal编程技术网

使用R计算相同条件下的费率

使用R计算相同条件下的费率,r,rate,R,Rate,我有一个问题要计算相同身份证号码下的费率。 以下是示例数据集d: id answer 1 1 1 0 1 0 1 1 1 1 1 1 1 0 2 0 2 0 2 0 3 1 3 0 理想的输出是 id rate freq 1 4/7 (=0.5714) 7 2 0 3 3 1/2 (=0.5) 2 谢谢。试试看 library(data.table) setDT(df1)[,l

我有一个问题要计算相同身份证号码下的费率。 以下是示例数据集d:

id answer
1   1
1   0
1   0
1   1
1   1
1   1
1   0
2   0
2   0
2   0
3   1
3   0
理想的输出是

id  rate          freq
1   4/7 (=0.5714)  7
2   0              3
3   1/2 (=0.5)     2
谢谢。

试试看

library(data.table)
setDT(df1)[,list(rate= mean(answer), freq=.N) ,id]
#   id      rate freq
#1:  1 0.5714286    7
#2:  2 0.0000000    3
#3:  3 0.5000000    2

数据
df1只是为了好玩,您可以使用
aggregate

> aggregate(answer~id, function(x) c(rate=mean(x), freq=length(x)), data=df1)
  id answer.rate answer.freq
1  1   0.5714286   7.0000000
2  2   0.0000000   3.0000000
3  3   0.5000000   2.0000000

根据您希望作为输出的内容,您可能希望在
aggregate
语句之后添加此语句,其中
ag
aggregate
语句的输出:
带有(ag,data.frame(id,answer))
在dplyr方法中使用不使用
mean
有什么原因吗?@docendodiscimus首先我将其编码为
sum()/n()
,因为
mean
没有通过查看预期的输出为我单击。然后,我意识到
mean
是有效的,忘了将其更改为
dplyr
df1 <- structure(list(id = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 
3L, 3L), answer = c(1L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 
0L)), .Names = c("id", "answer"), class = "data.frame", 
row.names = c(NA, -12L))
> aggregate(answer~id, function(x) c(rate=mean(x), freq=length(x)), data=df1)
  id answer.rate answer.freq
1  1   0.5714286   7.0000000
2  2   0.0000000   3.0000000
3  3   0.5000000   2.0000000