【发布时间】:2017-03-15 11:09:32
【问题描述】:
我需要根据两个变量对行进行排名,但我无法理解它。
测试数据如下:
df <- data.frame(A = c(12,35,55,7,6,NA,NA,NA,NA,NA), B = c(NA,12,25,53,12,2,66,45,69,43))
A B
12 NA
35 12
55 25
7 53
6 12
NA 2
NA 66
NA 45
NA 69
NA 43
我想计算第三个变量 C,当 A!=NA 时它等于 A。当 A==NA 然后 C==B 时,但 C 分数应始终遵循 A==NA 的行不应超过 A!=NA 的行。
在上面的数据中,Max(A) 应该等于 max(C),而 max(B) 只能保存第六高的 C 值,因为 A 有五个非 NA 值。如果 A ==NA 且 B 的排名超过 A!=NA 的行,则应进行某种形式的转换,以确保 A!=NA 行在最终 C 分数中始终高于 B 行
我希望结果看起来像这样:
A B C
55 25 1
35 12 2
12 NA 3
7 53 4
6 12 5
NA 69 6
NA 66 7
NA 45 8
NA 43 9
NA 2 10
到目前为止,我能得到的最接近的是
df$C <- ifelse(is.na(df$A), min(df$A, na.rm=T)/df$B, df$A)
但是当 A==NA 时排名倒置,所以 B==2 排名第 6 而不是 B==69
A B C
55 25 1
35 12 2
12 NA 3
7 53 4
6 12 5
NA 2 6
NA 43 7
NA 45 8
NA 66 9
NA 69 10
我不确定我是否可以使用某种重量?
非常感谢任何建议!谢谢!
【问题讨论】: