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

R 根据大型数据集中的平均值分配通过/失败值

R 根据大型数据集中的平均值分配通过/失败值,r,conditional,mean,R,Conditional,Mean,这可能是一个简单的问题,但我希望有人能给我指出正确的方向。我有一个样本数据集: dfrm <- list(L = c("A","B","P","C","D","E","P","F"), J=c(2,2,1,2,2,2,1,2), K=c(4,3,10,16,21,3,17,2)) dfrm <-as.data.frame(dfrm) dfrm L J K 1 A 2 4 2 B 2 3 3 P 1 10 4 C 2 16 5 D 2 21 6 E 2 3 7 P 1

这可能是一个简单的问题,但我希望有人能给我指出正确的方向。我有一个样本数据集:

dfrm <- list(L = c("A","B","P","C","D","E","P","F"), J=c(2,2,1,2,2,2,1,2), K=c(4,3,10,16,21,3,17,2))
 dfrm <-as.data.frame(dfrm)
 dfrm
  L J  K
1 A 2  4
2 B 2  3
3 P 1 10
4 C 2 16
5 D 2 21
6 E 2  3
7 P 1 17
8 F 2  2
接下来,我希望能够分配一个合格/不合格等级,其中合格=1,不合格=0,以确定K列中的数字是否大于平均值

最终数据集应如下所示:

cdfrm <- list(L = c("A","B","P","C","D","E","P","F"), J=c(2,2,1,2,2,2,1,2), K=c(4,3,10,16,21,3,17,2),C = c(0,0,0,1,1,0,1,0))
cdfrm <-as.data.frame(cdfrm)
 cdfrm
  L J  K C
1 A 2  4 0
2 B 2  3 0
3 P 1 10 0
4 C 2 16 1
5 D 2 21 1
6 E 2  3 0
7 P 1 17 1
8 F 2  2 0

cdfrm解决方案中有两个步骤。第一个是计算您感兴趣的值的平均值。换句话说,取data.frame中值子集的平均值。R有一个方便的函数来计算子集,称为
subset
。这就是它的作用:

meanK <- mean(subset(dfrm, subset=J==1, select=K))
meanK
K 
13.5 

meak以下是一行中的操作方法

transform(dfrm, C = K > sapply(split(dfrm$K, dfrm$J), mean)[J])

split
根据
J
sapply(…,mean)的值对
K
的值进行分组
计算分组平均值。

注意,对于所有意图和目的,TRUE对应于1,FALSE对应于0Yepp,您可以用
as.numeric(真、假、假、真)证明
+1提供示例并清楚说明所需结果。在R()简介的各个部分中描述了YOU试图实现的许多目标。
dfrm$Pass <- dfrm$K>meanK
dfrm
L J  K  Pass
1 A 2  4 FALSE
2 B 2  3 FALSE
3 P 1 10 FALSE
4 C 2 16  TRUE
5 D 2 21  TRUE
6 E 2  3 FALSE
7 P 1 17  TRUE
8 F 2  2 FALSE
transform(dfrm, C = K > sapply(split(dfrm$K, dfrm$J), mean)[J])