繁体   English   中英

删除R中具有特定总和的行

[英]delete rows with a specific sum in R

我有一个包含 140 列和 2000 行的数据框。 我想 t 找到列总和 (2:131)=1 的行。 并且如果这些条件中的任何一个是真实的,seizuremutidescrete = 1 或 crawlingsingle = 1 或癫痫发作状态 = 1

然后删除这些行:

bupro%>%select(bupro[rowSums(bupro[2:131]==1)]&&((bupro["Seizuresingle"] =1 | bupro["Seizuresstatus"]| bupro["Seizuresmultidiscrete"|=1)) 


任何帮助表示赞赏

正如@onyambu 所说,您需要使用filter而不是select ,此外,要删除符合条件的行,您必须放一个! 前面的整体情况:

library(tidyverse)
set.seed(100)
df <- tibble(
  seizuresingle = sample(0:1, 100, replace = T),
  seizuremultidiscrete = sample(0:1, 100, replace = T),
  seizurestatus = sample(0:1, 100, replace = T),
  col1 = sample(seq(0, 1, by = 0.1), 100, replace = T),
  col2 = sample(seq(0, 1, by = 0.1), 100, replace = T),
  col3 = sample(seq(0, 1, by = 0.1), 100, replace = T),
  col4 = sample(seq(0, 1, by = 0.1), 100, replace = T)
)
df %>% 
  rowwise() %>% 
  filter(!(sum(c_across(starts_with("col"))) == 1 && sum(c_across(starts_with("seiz"))) >= 1))
#> # A tibble: 94 × 7
#> # Rowwise: 
#>    seizuresingle seizuremultidiscrete seizurestatus  col1  col2  col3  col4
#>            <int>                <int>         <int> <dbl> <dbl> <dbl> <dbl>
#>  1             1                    1             1   0.9   0.4   0.5   0.9
#>  2             0                    0             1   0.2   0     0.4   0  
#>  3             1                    0             0   1     1     0.5   0.5
#>  4             1                    0             0   0.7   0.1   0.6   0.2
#>  5             0                    1             1   0.9   0.4   0.4   0.9
#>  6             0                    0             0   0.3   0.7   0.5   0.9
#>  7             1                    1             1   0.6   0.4   0.6   0.2
#>  8             1                    1             1   0     0.4   0     0.5
#>  9             1                    0             0   0.2   0.3   0.9   0.4
#> 10             0                    0             1   0.8   0     0.3   0.3
#> # … with 84 more rows

如果我们拿出来! 我们可以看到被过滤掉的行:

df %>% 
  rowwise() %>% 
  filter((sum(c_across(starts_with("col"))) == 1 && sum(c_across(starts_with("seiz"))) >= 1))
#> # A tibble: 6 × 7
#> # Rowwise: 
#>   seizuresingle seizuremultidiscrete seizurestatus  col1  col2  col3  col4
#>           <int>                <int>         <int> <dbl> <dbl> <dbl> <dbl>
#> 1             1                    0             1   0.1   0.4   0.2   0.3
#> 2             1                    1             1   0.5   0.4   0     0.1
#> 3             0                    1             0   0.7   0.1   0     0.2
#> 4             0                    0             1   0.2   0     0     0.8
#> 5             1                    1             0   0     0.4   0.1   0.5
#> 6             1                    1             1   0.1   0     0.7   0.2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM