如果从R中的dataframe中有无限个条目,则删除组

如果从R中的dataframe中有无限个条目,则删除组,r,dplyr,R,Dplyr,我有3组,我收集了4个变量12个月的数据 对于某些group*MOUNT组合,任何of变量都可能有一个-Inf值 temp <- data.frame(group_id = rep(1:3, each = 12), Month = rep(1:12, times = 3), var1 = c(-Inf, rnorm(35)), var2 = rnorm(36),

我有3组,我收集了4个变量12个月的数据 对于某些group*MOUNT组合,任何of变量都可能有一个-Inf值

temp <- data.frame(group_id = rep(1:3, each = 12),
                 Month = rep(1:12, times = 3),
                 var1 = c(-Inf, rnorm(35)),
                 var2 = rnorm(36),
                 var3 = rnorm(36),
                 var4 = c(rnorm(35), -Inf))
temp%
dplyr::summary(var1_inf=sum(is.infinite(var1)),
var2_inf=sum(is.infinite(var2)),
var3_inf=sum(is.infinite(var3)),
var4\u inf=sum(is.infinite(var4))%>%
行%>%
dplyr::mutate(row\u sum=sum(var1\u inf:var4\u inf))%>%
dplyr::mutate(row_sum=ifelse(row_sum!=0,NA,row_sum))%>%
tidyr::drop_na()
temp%>%dplyr::筛选器(组id%在%group\U中保留$group\U id)

一个
dplyr
purrr
选项可以是:

temp %>%
 group_by(group_id) %>%
 filter(all(pmap_lgl(across(var1:var4), ~ sum(is.infinite(c(...))) == 0)))

   group_id Month    var1    var2    var3    var4
      <int> <int>   <dbl>   <dbl>   <dbl>   <dbl>
 1        2     1 -0.598  -1.92   -0.909  -0.504 
 2        2     2 -0.475  -0.376  -0.0863  0.750 
 3        2     3 -0.653   0.839   0.407  -0.841 
 4        2     4  0.0454 -0.524  -0.0168 -0.0497
 5        2     5  1.03   -0.215   1.09    1.12  
 6        2     6  1.87   -1.12    1.28   -1.78  
 7        2     7  1.46   -1.48    1.08   -1.18  
 8        2     8 -0.462  -0.304  -1.29   -2.02  
 9        2     9 -0.0585 -0.654   0.415   0.892 
10        2    10 -0.229  -1.11   -0.670  -0.696 
11        2    11  1.03    0.0637 -0.718  -0.0300
12        2    12  0.454  -2.14   -0.199   0.142 
temp%>%
分组人(分组id)%>%
过滤器(全部(pmap_lgl(跨(var1:var4),~sum(is.infinite(c(…))==0)))
组id月var1 var2 var3 var4
1        2     1 -0.598  -1.92   -0.909  -0.504 
2        2     2 -0.475  -0.376  -0.0863  0.750 
3        2     3 -0.653   0.839   0.407  -0.841 
4        2     4  0.0454 -0.524  -0.0168 -0.0497
5        2     5  1.03   -0.215   1.09    1.12  
6        2     6  1.87   -1.12    1.28   -1.78  
7        2     7  1.46   -1.48    1.08   -1.18  
8        2     8 -0.462  -0.304  -1.29   -2.02  
9        2     9 -0.0585 -0.654   0.415   0.892 
10        2    10 -0.229  -1.11   -0.670  -0.696 
11        2    11  1.03    0.0637 -0.718  -0.0300
12        2    12  0.454  -2.14   -0.199   0.142 
temp %>%
 group_by(group_id) %>%
 filter(all(pmap_lgl(across(var1:var4), ~ sum(is.infinite(c(...))) == 0)))

   group_id Month    var1    var2    var3    var4
      <int> <int>   <dbl>   <dbl>   <dbl>   <dbl>
 1        2     1 -0.598  -1.92   -0.909  -0.504 
 2        2     2 -0.475  -0.376  -0.0863  0.750 
 3        2     3 -0.653   0.839   0.407  -0.841 
 4        2     4  0.0454 -0.524  -0.0168 -0.0497
 5        2     5  1.03   -0.215   1.09    1.12  
 6        2     6  1.87   -1.12    1.28   -1.78  
 7        2     7  1.46   -1.48    1.08   -1.18  
 8        2     8 -0.462  -0.304  -1.29   -2.02  
 9        2     9 -0.0585 -0.654   0.415   0.892 
10        2    10 -0.229  -1.11   -0.670  -0.696 
11        2    11  1.03    0.0637 -0.718  -0.0300
12        2    12  0.454  -2.14   -0.199   0.142