r-dplyr:省略具有负值的行,条件是每行有两个重复的参数



假设我在p中存储了以下内容

los       tti  ID
1  1.002083333 23.516667  84
2 -0.007638889  2.633333 118
3  0.036805556  2.633333 118
4  0.134722222  2.716667 120
5  2.756250000 82.800000 132
6  1.066666667 17.933333 156
7 -2.496250000 12.830948 156

我希望filter输出p$los具有负值的行,但前提是p$ttip$ID在行之间重复。例如,行23p$ttip$ID上都是重复的,因此,由于p$los中的负值,应该省略行2。关于p$ID,行67是重复的,而不是p$tti,因此应该保留。

我正在寻找dplyr的解决方案

p <- structure(list(los = c(1.00208333333333, -0.00763888888888889, 
0.0368055555555556, 0.134722222222222, 2.75625, 1.06666666666667, 
-0.00763888888888889, 4.84305555555556, 1.79375, 8.55694444444444
), tti = c(23.5166666666667, 2.63333333333333, 2.63333333333333, 
2.71666666666667, 82.8, 17.9333333333333, 1.31666666666667, 69.2666666666667, 
52.9833333333333, 36.0166666666667), ID = c(84L, 118L, 118L, 
120L, 132L, 156L, 179L, 245L, 253L, 334L)), row.names = c(NA, 
                                           10L), class = "data.frame") 

根据您的度量,作为数据处理的一部分,您可能需要将tti列(数字小数(四舍五入到某个公差级别(例如,小数点后3位(。

使用dplyr,您可以尝试以下操作:

p %>% 
group_by(tti, ID) %>% 
filter(n() == 1 | los >= 0)

这将通过ttiID(组的n() == 1)(过滤/保留不存在重复的行,然后如果存在重复,则保留los为正或零(非负(的行。

输出

los   tti    ID
<dbl> <dbl> <int>
1  1.00    23.5     84
2  0.0368   2.63   118
3  0.135    2.72   120
4  2.76    82.8    132
5  1.07    17.9    156
6 -0.00764  1.32   179
7  4.84    69.3    245
8  1.79    53.0    253
9  8.56    36.0    334

如果我正确理解

library(tidyverse)
df <- read.table(text = "           los       tti  ID
1  1.002083333 23.516667  84
2 -0.007638889  2.633333 118
3  0.036805556  2.633333 118
4  0.134722222  2.716667 120
5  2.756250000 82.800000 132
6  1.066666667 17.933333 156
7 -2.496250000 12.830948 156", header = T)
df %>% 
group_by(ID) %>% 
filter((sd(tti, na.rm = T) + los) > 0 | is.na(sd(tti, na.rm = T))) %>% 
ungroup()
#> # A tibble: 6 x 3
#>       los   tti    ID
#>     <dbl> <dbl> <int>
#> 1  1.00   23.5     84
#> 2  0.0368  2.63   118
#> 3  0.135   2.72   120
#> 4  2.76   82.8    132
#> 5  1.07   17.9    156
#> 6 -2.50   12.8    156

由reprex软件包(v1.0.0(于2021-03-15创建

相关内容

  • 没有找到相关文章

最新更新