删除具有基于列的条件的行
remove rows with conditions based on columns
我正在尝试删除属于同一 TRIAL 组和具有空特征值的特征组的行
dt <- tibble(
TRIAL = c("M20-07RND1", "M20-07RND1", "M20-07RND1", " M20-07RND1", " M20-06RND5", " M20-06RND5", " M20-06RND5", " M20-06RND5", " V-01RND1", " V-01RND1", " V-01RND1", "V-01RND1"),
PLOT= c(1, 2, 3, 1, 6, 3, 2, 3, 1,67,34,34),
trait = c("ASI", "ASI", "AD", "AD", "ASI", "ASI", "FY", "FY", "FOR", "FOR", "CY", "CY"),
trialValue = c(2, 7, 2, 2, NA,34 ,NA ,NA ,10 ,NA ,NA ,NA)
)
# # A tibble: 11 x 4
# TRIAL PLOT trait trialValue
<chr> <dbl> <chr> <dbl
#1 M20-07RND1 1 ASI 2
#2 M20-07RND1 2 ASI 7
#3 M20-07RND1 3 AD 2
#4 M20-07RND1 1 AD 2
#5 M20-06RND5 6 ASI
#6 M20-06RND5 3 ASI 34
#7 M20-06RND5 2 FY
#8 M20-06RND5 3 FY
#9 V-01RND1 1 FOR 10
#10 V-01RND1 67 FOR
#11 v-01RND1 34 CY
#12 v-01RND1 34 CY
这就是我想要实现的:如果一组特征具有空特征值并且属于同一个 TRIAL 组,则删除满足条件的整行。
# # A tibble: 11 x 4
# TRIAL PLOT trait trialValue
<chr> <dbl> <chr> <dbl
#1 M20-07RND1 1 ASI 2
#2 M20-07RND1 2 ASI 7
#3 M20-07RND1 3 AD 2
#4 M20-07RND1 1 AD 2
#5 M20-06RND5 6 ASI
#6 M20-06RND5 3 ASI 34
#9 V-01RND1 1 FOR 10
#10 V-01RND1 67 FOR
不知道怎么办,请大家帮忙
library(dplyr)
dt %>%
group_by(TRIAL, trait) %>%
filter(sum(trialValue, na.rm = TRUE) != 0)
# A tibble: 8 x 4
# Groups: TRIAL, trait [5]
TRIAL PLOT trait trialValue
<chr> <dbl> <chr> <dbl>
1 "M20-07RND1" 1 ASI 2
2 "M20-07RND1" 2 ASI 7
3 "M20-07RND1" 3 AD 2
4 " M20-07RND1" 1 AD 2
5 " M20-06RND5" 6 ASI NA
6 " M20-06RND5" 3 ASI 34
7 " V-01RND1" 1 FOR 10
8 " V-01RND1" 67 FOR NA
使用any
:
library(dplyr)
dt %>%
group_by(TRIAL, trait) %>%
filter(any(!is.na(trialValue)))
输出
# A tibble: 8 x 4
# Groups: TRIAL, trait [5]
TRIAL PLOT trait trialValue
<chr> <dbl> <chr> <dbl>
1 "M20-07RND1" 1 ASI 2
2 "M20-07RND1" 2 ASI 7
3 "M20-07RND1" 3 AD 2
4 " M20-07RND1" 1 AD 2
5 " M20-06RND5" 6 ASI NA
6 " M20-06RND5" 3 ASI 34
7 " V-01RND1" 1 FOR 10
8 " V-01RND1" 67 FOR NA
我正在尝试删除属于同一 TRIAL 组和具有空特征值的特征组的行
dt <- tibble(
TRIAL = c("M20-07RND1", "M20-07RND1", "M20-07RND1", " M20-07RND1", " M20-06RND5", " M20-06RND5", " M20-06RND5", " M20-06RND5", " V-01RND1", " V-01RND1", " V-01RND1", "V-01RND1"),
PLOT= c(1, 2, 3, 1, 6, 3, 2, 3, 1,67,34,34),
trait = c("ASI", "ASI", "AD", "AD", "ASI", "ASI", "FY", "FY", "FOR", "FOR", "CY", "CY"),
trialValue = c(2, 7, 2, 2, NA,34 ,NA ,NA ,10 ,NA ,NA ,NA)
)
# # A tibble: 11 x 4
# TRIAL PLOT trait trialValue
<chr> <dbl> <chr> <dbl
#1 M20-07RND1 1 ASI 2
#2 M20-07RND1 2 ASI 7
#3 M20-07RND1 3 AD 2
#4 M20-07RND1 1 AD 2
#5 M20-06RND5 6 ASI
#6 M20-06RND5 3 ASI 34
#7 M20-06RND5 2 FY
#8 M20-06RND5 3 FY
#9 V-01RND1 1 FOR 10
#10 V-01RND1 67 FOR
#11 v-01RND1 34 CY
#12 v-01RND1 34 CY
这就是我想要实现的:如果一组特征具有空特征值并且属于同一个 TRIAL 组,则删除满足条件的整行。
# # A tibble: 11 x 4
# TRIAL PLOT trait trialValue
<chr> <dbl> <chr> <dbl
#1 M20-07RND1 1 ASI 2
#2 M20-07RND1 2 ASI 7
#3 M20-07RND1 3 AD 2
#4 M20-07RND1 1 AD 2
#5 M20-06RND5 6 ASI
#6 M20-06RND5 3 ASI 34
#9 V-01RND1 1 FOR 10
#10 V-01RND1 67 FOR
不知道怎么办,请大家帮忙
library(dplyr)
dt %>%
group_by(TRIAL, trait) %>%
filter(sum(trialValue, na.rm = TRUE) != 0)
# A tibble: 8 x 4
# Groups: TRIAL, trait [5]
TRIAL PLOT trait trialValue
<chr> <dbl> <chr> <dbl>
1 "M20-07RND1" 1 ASI 2
2 "M20-07RND1" 2 ASI 7
3 "M20-07RND1" 3 AD 2
4 " M20-07RND1" 1 AD 2
5 " M20-06RND5" 6 ASI NA
6 " M20-06RND5" 3 ASI 34
7 " V-01RND1" 1 FOR 10
8 " V-01RND1" 67 FOR NA
使用any
:
library(dplyr)
dt %>%
group_by(TRIAL, trait) %>%
filter(any(!is.na(trialValue)))
输出
# A tibble: 8 x 4
# Groups: TRIAL, trait [5]
TRIAL PLOT trait trialValue
<chr> <dbl> <chr> <dbl>
1 "M20-07RND1" 1 ASI 2
2 "M20-07RND1" 2 ASI 7
3 "M20-07RND1" 3 AD 2
4 " M20-07RND1" 1 AD 2
5 " M20-06RND5" 6 ASI NA
6 " M20-06RND5" 3 ASI 34
7 " V-01RND1" 1 FOR 10
8 " V-01RND1" 67 FOR NA