下面是我在R
. “Ahas an assigned letter in
列 B, and an assigned value in
列 C. I want to add a
列 Dthat records a ratio for each observation in
列 A ”中的每个观察结果。以下是观察值“1”的比率计算示例。
对于“1”的每次观察,我想计算出现在表中但未分配给“1”的所有x。在这种情况下,计数为 2,因为有两个 X 分配给观察“3”。除了上述条件之外,我还想计算未分配给观察“1”的 X值大于 6的column C
. 计数为 1,因为分配给“3”的两个 X 之一的值大于 6 column C
。因此,在 中column D
,每个观测值“1”的比率为 1 比 2:1/2。
我也想为 Y's incolumn B
做。
data_table
Column A Column B Column C
1 X 7
1 X 8
1 X 3
1 X 3
2 Y 3
2 Y 8
3 X 5
3 X 7
4 Y 6
4 Y 7
4 Y 8
我希望结果表如下所示:
Column A Column B Column C Column D
1 X 7 1/2 #There are two x's assigned to "3", and one of which has a value greater than 6 in column C.
1 X 8 1/2
1 X 3 1/2
1 X 3 1/2
2 Y 3 2/3
2 Y 8 2/3
3 X 5 2/4
3 X 7 2/4
4 Y 6 1/2
4 Y 7 1/2
4 Y 8 1/2
这是我到目前为止提出的代码,但是对于 中的每个观察column A
,我未能生成nrow
跳过分配给该观察的X 的计数。
final_df %>% group_by(column_B) %>%
mutate(ratio = nrow(filter(final_df, column_C>6))/nrow(final_df))
关于如何修改它以column A
在计算值大于 6 (in column C
)的 X 的比例时从特定观察 ( ) 中排除 X 的任何建议
谢谢!
像这样简单的东西怎么样?
## Simulate some data
id1 <- rep(round(runif(250, 0,1)*100000000),each=4)
id2 <- rep(round(runif(50, 0,1)*100000000),each=4)
id2 <- rep(id2, each=5)
value <- rnorm(1000, mean=6, sd=2)
df <- data.frame(id1, id2, value)
## Calculate using a loop
output <- data.frame(id1, id2, prop=NA)
output <- output[!duplicated(output),]
for(i in 1:nrow(output)){
gt6 <- sum(df$value[df$id2!=output$id2[i]]>6)
tot <- sum(df$id2!=output$id2[i])
output$prop[i] <- gt6/tot
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句