“变异”不适用于na.spline/na.approx

“变异”不适用于na.spline/na.approx,r,dplyr,spline,R,Dplyr,Spline,我尝试在mutate中使用na.approx()和na.spline(),但是输出向量的长度是错误的,我得到了以下错误 Error: Column `var_1 <- na.approx(var_1, na.rm = F)` must be length 1 (the group size), not 2 在这里,在这里,最终起作用的是: test <- test %>% group_by(group_1,group_2) %>% arrange(gro

我尝试在mutate中使用na.approx()和na.spline(),但是输出向量的长度是错误的,我得到了以下错误

 Error: Column `var_1 <- na.approx(var_1, na.rm = F)` must be length 1 (the group size), not 2


在这里,
在这里,
最终起作用的是:

test <- test %>% 
  group_by(group_1,group_2) %>% 
  arrange(group_1) %>%
  mutate(
    var_1 = na.approx(var_1,na.rm = FALSE),
    var_1 = if(all(is.na(var_1))) NA else na.spline(var_1,na.rm = FALSE),
    var_2 = if(all(is.na(var_2))) NA else na.spline(var_2,na.rm = FALSE))
test%
分组依据(分组1,分组2)%>%
排列(组1)%>%
变异(
var_1=近似值(var_1,na.rm=假),
var_1=if(all(is.na(var_1)))na else na.spline(var_1,na.rm=FALSE),
var_2=if(all(is.na(var_2)))na else na.spline(var_2,na.rm=FALSE))

最终起作用的是:

test <- test %>% 
  group_by(group_1,group_2) %>% 
  arrange(group_1) %>%
  mutate(
    var_1 = na.approx(var_1,na.rm = FALSE),
    var_1 = if(all(is.na(var_1))) NA else na.spline(var_1,na.rm = FALSE),
    var_2 = if(all(is.na(var_2))) NA else na.spline(var_2,na.rm = FALSE))
test%
分组依据(分组1,分组2)%>%
排列(组1)%>%
变异(
var_1=近似值(var_1,na.rm=假),
var_1=if(all(is.na(var_1)))na else na.spline(var_1,na.rm=FALSE),
var_2=if(all(is.na(var_2)))na else na.spline(var_2,na.rm=FALSE))

您的示例对于特定组也只有NA元素。如果您可以提供预期的输出,那就太好了。
ifelse
根据第一个参数,即条件来确定输出的长度。当输入长度为1时,只能返回
yes=
和/或
no=
参数的第一个元素。如果您希望
ifelse
在这里返回一个向量,那么可能
ifelse(is.na(x),x[na],na.spline(x,na.rm=FALSE))
。(
x[NA]
是为了确保您得到的
NA
类与
x
类相同,我假设它是
NA.spline(x)
中的类)您的示例对于特定组也只有NA元素。如果您可以提供预期的输出,那就太好了。
ifelse
根据第一个参数,即条件来确定输出的长度。当输入长度为1时,只能返回
yes=
和/或
no=
参数的第一个元素。如果您希望
ifelse
在这里返回一个向量,那么可能
ifelse(is.na(x),x[na],na.spline(x,na.rm=FALSE))
。(
x[NA]
是为了确保您得到的
NA
类与
x
类相同,我假设它将是
NA.spline(x)
之外的类)在我的实际数据库中,我仍然得到错误“error:Column
var\u 1
必须是长度16(组大小)或1,而不是14”@MCS您可以发布一个小示例来说明问题在我的实际数据库中我仍然得到错误“error:Column
var_1
必须是长度16(组大小)或1,而不是14”@MCS您可以发布一个小示例来说明问题吗
Error: Column `var_1` must be length 16 (the group size) or one, not 14
library(dplyr)
test %>% 
    group_by(group_1,group_2) %>% 
    mutate(var_1 = na.approx(var_1,na.rm = FALSE),
           var_2 = if(all(is.na(var_2))) NA else na.spline(var_2,na.rm = FALSE))
test <- test %>% 
  group_by(group_1,group_2) %>% 
  arrange(group_1) %>%
  mutate(
    var_1 = na.approx(var_1,na.rm = FALSE),
    var_1 = if(all(is.na(var_1))) NA else na.spline(var_1,na.rm = FALSE),
    var_2 = if(all(is.na(var_2))) NA else na.spline(var_2,na.rm = FALSE))