[英]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.