这可能是一个简单的问题,但我希望有人可以指出我正确的方向.我有一个示例数据集:
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
列J指定了在K中定义的变量的类型.我希望能够获取在它们旁边分配了1的K值的平均值.在这个例子中,它将是10和17
T = c(10,17)
mean(T)
13.5
接下来我希望能够分配通过/失败等级,其中pass = 1,fail = 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
这看起来很基本,我很抱歉,我只是不知道我在想什么.
最佳答案 解决方案有两个步骤.第一种是计算您感兴趣的值的平均值.换句话说,取datanframe中值的子集的平均值. R具有计运算符集的便利功能,称为子集.这是在行动:
meanK <- mean(subset(dfrm, subset=J==1, select=K))
meanK
K
13.5
接下来,您要将数据框中的列K与我们刚刚计算的平均值进行比较.这是一个简单的矢量比较:
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