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

计算R中的比率

计算R中的比率,r,R,如果我有此数据集: Name从dplyr包中使用case\u时: library(dplyr) MyData$Ratios <- case_when( is.na(MyData$Xnum) & is.na(MyData$Ynum) ~ 1, is.na(MyData$Xnum) & MyData$Ynum >= 0 ~ 1, MyData$Xnum >= 0 & is.na(MyData$Ynum) ~ 0, TRUE

如果我有此数据集:
Name从
dplyr
包中使用
case\u时:

library(dplyr)

MyData$Ratios <-
case_when(
    is.na(MyData$Xnum) & is.na(MyData$Ynum) ~ 1,
    is.na(MyData$Xnum) & MyData$Ynum >= 0 ~ 1,
    MyData$Xnum >= 0 & is.na(MyData$Ynum) ~ 0,
    TRUE ~ MyData$Xnum / MyData$Ynum
)
库(dplyr)
MyData$比率=0~1,
MyData$Xnum>=0&is.na(MyData$Ynum)~0,
TRUE~MyData$Xnum/MyData$Ynum
)

添加所需的输出。有一点,您不需要使用.double
或0.0中的.0。例如,
idential(0,as.double(0.0))
返回TRUE。看起来你来自不同的语言。在R基中有双精度和整数,就是这样。蒂姆,这很完美,正是我想要的。如果我还没有在手册中看到这种情况。
`If Xnum == NA AND Ynum == NA
    Ratio = 1
Else if Xnum == NA AND Ynum >= 0
    Ratio = 1
Else if Xnum >= 0 AND Ynum == NA
    Ratio = 0
Else
    Ratio = Xnum / Ynum`
`determine_ratios <- function( PrevTotal, AllTotal ) {

    if ( (is.na(PrevTotal)) && (is.na(AllTotal)) ) {
        return(as.double(1.0))
    } else if ((PrevTotal  >= 0) && (is.na(AllTotal)) ) {
        return(as.double(1.0))
    } else if ((is.na(PrevTotal)) && (AllTotal >= 0) ) {
        return(as.double(0.0))
    } else {
        return(as.double(PrevTotal / AllTotal ))
    }
}`
`MyData$Ratios <- determine_ratios(MyData$Xnum, MyData$Ynum)`
`print(MyData)
  Name Xnum Ynum Ratios
1 Bill    5   10    0.5
2  Ben   NA    5     NA
3 Lisa   10   NA     NA
4 Maya   NA   NA     NA`
`print(MyData)
  Name Xnum Ynum Ratios
1 Bill    5   10    0.5
2  Ben   NA    5     1
3 Lisa   10   NA     0
4 Maya   NA   NA     1`
library(dplyr)

MyData$Ratios <-
case_when(
    is.na(MyData$Xnum) & is.na(MyData$Ynum) ~ 1,
    is.na(MyData$Xnum) & MyData$Ynum >= 0 ~ 1,
    MyData$Xnum >= 0 & is.na(MyData$Ynum) ~ 0,
    TRUE ~ MyData$Xnum / MyData$Ynum
)