Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.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_Plyr - Fatal编程技术网

计算数据帧的平均值、标准误差和R百分比

计算数据帧的平均值、标准误差和R百分比,r,plyr,R,Plyr,我有一个具有以下结构的数据帧,dput(scoreDF): scoreDF您可以使用tapply计算组统计数据。如果您的数据框被称为学生,那么要计算通过/失败的平均值,您需要指定: tapply(students$Subject_1_Score, students$Status, FUN=mean) 对于标准误差,用stdErr函数代替mean 如果要跨多列计算某些内容,可以索引x: tapply(students[,2:3], students$Status, FUN=mean) 要计算通

我有一个具有以下结构的数据帧,
dput(scoreDF)


scoreDF您可以使用tapply计算组统计数据。如果您的数据框被称为学生,那么要计算通过/失败的平均值,您需要指定:

tapply(students$Subject_1_Score, students$Status, FUN=mean)
对于标准误差,用stdErr函数代替mean

如果要跨多列计算某些内容,可以索引x:

tapply(students[,2:3], students$Status, FUN=mean)
要计算通过考试的学生百分比,请执行以下操作:

dim(students[students$Status == "Pass" ,])[1] / dim(students)[1]
或按分数:

dim(students[students$Subject_1_Score >= 65 ,])[1] / dim(students)[1]
以上是使用索引的此类向量语句的数据帧示例:

length(x[x == "Pass"]) / length(x)

要跨行或列计算函数,可以使用
apply

计算组统计信息。如果您的数据框被称为学生,那么要计算通过/失败的平均值,您需要指定:

tapply(students$Subject_1_Score, students$Status, FUN=mean)
对于标准误差,用stdErr函数代替mean

如果要跨多列计算某些内容,可以索引x:

tapply(students[,2:3], students$Status, FUN=mean)
要计算通过考试的学生百分比,请执行以下操作:

dim(students[students$Status == "Pass" ,])[1] / dim(students)[1]
或按分数:

dim(students[students$Subject_1_Score >= 65 ,])[1] / dim(students)[1]
以上是使用索引的此类向量语句的数据帧示例:

length(x[x == "Pass"]) / length(x)

要跨行或列计算函数,可以使用
apply

,这不是一个可重复的问题。如需灵感,请参阅。如果我理解您的问题,则无需
plyr
<代码>nrow(数据[数据$Status='Pass',])/nrow(数据)
。除非您想在
ID
上拆分<代码>ddply(数据、ID、摘要、和(状态==‘通过’)/长度(状态)@Justin:我希望找到一种不必硬编码值的方法,比如
Status=='Pass'
。这就是为什么我试图用
ddply
找到一些东西。是否可以用
Status
而不是
ID
来总结我不明白如何计算
\passes/total
>没有“硬编码”这一事实。这不是一个可重复的问题。请参阅,例如,获取灵感。如果我理解你的问题,就不需要
plyr
nrow(Data[Data$Status=='Pass',])/nrow(Data)
。除非你想在
ID
上拆分,
ddply(Data,,(ID),summary,sum(Status='Pass')/length(Status)
@Justin:我希望找到一种不必硬编码值的方法,比如
Status=='Pass'
。这就是为什么我试图用
ddply
找到一些东西。是否可以用
Status
而不是
ID
来总结我不明白如何计算
\passes/total
>没有“硬编码”这一事实。
标准错误将你的stdErr函数替换为mean。
。但它们不一样,对吗?有趣的论点是将函数传递给tapply。如果你想使用stdErr函数:tapply(学生$Subject\u分数,学生$Status,FUN=stdErr)
标准错误将stdErr函数替换为mean。
。但它们不一样,对吗?有趣的参数是将函数传递给tapply。如果要使用stdErr函数:tapply(学生$Subject\u 1\u分数,学生$Status,FUN=stdErr)