【发布时间】:2013-08-30 20:28:20
【问题描述】:
我有这个数据框
| A | B | C | Output |
|---------|---------|---------|--------|
| NoFault | NoFault | NoFault | 8 |
| Fault | NoFault | NoFault | 2 |
| NoFault | Fault | NoFault | 0 |
| Fault | Fault | NoFault | 2 |
| NoFault | NoFault | Fault | 2 |
| Fault | NoFault | Fault | 0 |
| NoFault | Fault | Fault | 2 |
| Fault | Fault | Fault | 4 |
我使用以下代码生成了这个:
A <- c(1,0,1,0,1,0,1,0)
B <- c(1,1,0,0,1,1,0,0)
C <- c(1,1,1,1,0,0,0,0)
Output <- c(8,2,0,2,2,0,2,4)
data <- data.frame(cbind(A,B,C,Output))
我希望执行一个操作来计算 C 列的输出百分比,结果应该如下所示:
| A | B | C | Output |
|---------|---------|---------|--------|
| NoFault | NoFault | NoFault |8/(8+2) |
| Fault | NoFault | NoFault |2/(2+0) |
| NoFault | Fault | NoFault |0/(0+2) |
| Fault | Fault | NoFault |2/(2+4) |
| NoFault | NoFault | Fault |2/(2+8) |
| Fault | NoFault | Fault |0/(0+2) |
| NoFault | Fault | Fault |2/(2+0) |
| Fault | Fault | Fault |4/(4+2) |
所以,这里发生的情况是,每当我重复 A、B 列序列时,我都会获取这些行并以百分比形式输出。
例如A = NoFault,B=NoFault,将C的输出Fault和NoFault转换成分数
如果可以避免循环,我希望使用向量操作或plyr 包来执行此操作。
【问题讨论】:
-
请将
dput(yourdataframe)的输出复制到问题中。另外,你试过什么? -
看不懂C的作用,能多说明几行吗?
-
请告诉我们您已经编写了哪些代码。我们在这里帮助纠正损坏的代码,而不是为您编写。谢谢。
-
因此,就像当 A 和 B 是一些值(故障/无故障)时,将 C 设为故障或无故障的机会有多大。因此,第 1 行和第 5 行构成一个案例。同样,第 2 行和第 6 行作为第二种情况。