Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.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 想用向量中的NA求最小值,但给我NA代替数字_R - Fatal编程技术网

R 想用向量中的NA求最小值,但给我NA代替数字

R 想用向量中的NA求最小值,但给我NA代替数字,r,R,我正在根据两位读者所说的来确定最后的年龄。我希望我的代码有条件地确定最终年龄:(1)如果两个年龄相同,最终年龄将为a,(2)如果两个年龄相差一年,最终年龄将为较低的年龄,(3)如果两个年龄相差两年,最终年龄将为平均年龄,(4)如果两个年龄相差两年以上,则为a“一次性的。” 这在大多数情况下都是有效的,但当我有一个年龄是NA时,它只会给我NA,我希望最后的年龄变成非NA年龄 这就是我的数据的样子,用逗号分隔列: [1] age_a, age_k [2] 6, 6 [3] 8, 7 [

我正在根据两位读者所说的来确定最后的年龄。我希望我的代码有条件地确定最终年龄:(1)如果两个年龄相同,最终年龄将为a,(2)如果两个年龄相差一年,最终年龄将为较低的年龄,(3)如果两个年龄相差两年,最终年龄将为平均年龄,(4)如果两个年龄相差两年以上,则为a“一次性的。”

这在大多数情况下都是有效的,但当我有一个年龄是NA时,它只会给我NA,我希望最后的年龄变成非NA年龄

这就是我的数据的样子,用逗号分隔列:

[1] age_a, age_k   
[2] 6, 6  
[3] 8, 7  
[4] 6, 6   
[5] 10, 10  
[6] 6, 7  
[7] 15, 6  
[8] 13, NA
这是我的代码(“ka_ages”是我为rowMeans函数创建的组合agea和agek的向量):


因此,[7]是我想要的,但[8]不是-我希望它采用数字,而不是NA。这是用于它的正确函数吗?

因为
age\u k
NA
在你的最后一行,你所有的比较都返回
NA
,而你的案例陈述没有返回任何东西(因此
NA

您需要添加一个与

sum(is.na(c(agek, agea)))>0 ~ min(agek, agea, na.rm=TRUE)
最终案例陈述:

ka_final <- case_when(  
            agea == agek ~ agea,  
            abs(agek - agea) == 1 ~ pmin(agea, agek, na.rm = TRUE),
            abs(agek - agea) == 2 ~ rowMeans(df),  
            abs(agek - agea) > 2 ~ NA_real_,
            sum(is.na(c(agek, agea)))>0 ~ min(agek, agea, na.rm=TRUE)
)
ka_final 2~NA_real_,
总和(is.na(c(agek,agea))>0~min(agek,agea,na.rm=TRUE)
)
Thank!!在最后一个子句中用“pmin”代替“max”,因为“max”给出了整个向量的最大值,而不是两个元素的最大值。
sum(is.na(c(agek, agea)))>0 ~ min(agek, agea, na.rm=TRUE)
ka_final <- case_when(  
            agea == agek ~ agea,  
            abs(agek - agea) == 1 ~ pmin(agea, agek, na.rm = TRUE),
            abs(agek - agea) == 2 ~ rowMeans(df),  
            abs(agek - agea) > 2 ~ NA_real_,
            sum(is.na(c(agek, agea)))>0 ~ min(agek, agea, na.rm=TRUE)
)