這裏有一個tidyverse選項:
library(tidyverse)
df <- structure(list(ID = c("A1.1234567_10", "A1.1234567_20"),
var1 = c("NORMAL", "NORMAL"),
var2 = c("NORMAL", "NORMAL"),
var3 = c("NORMAL", "NORMAL"),
var4 = c("NORMAL", "NORMAL"),
var5 = c("NORMAL", "NORMAL"),
var6 = c("NORMAL", "NORMAL"),
var7 = c("NORMAL", "ABNORMAL"),
var8 = c("NORMAL", "NORMAL")),
.Names = c("ID", "var1", "var2", "var3", "var4", "var5", "var6", "var7", "var8"),
class = "data.frame", row.names = c(NA, -2L))
# separate group variable from observation label
df_tidy <- df %>% separate(ID, c('ID', 'obs'), sep = '_')
df_tidy
#> ID obs var1 var2 var3 var4 var5 var6 var7 var8
#> 1 A1.1234567 10 NORMAL NORMAL NORMAL NORMAL NORMAL NORMAL NORMAL NORMAL
#> 2 A1.1234567 20 NORMAL NORMAL NORMAL NORMAL NORMAL NORMAL ABNORMAL NORMAL
df_tidy %>%
select(-obs) %>%
group_by(ID) %>%
summarise_all(lift(`==`))
#> # A tibble: 1 x 9
#> ID var1 var2 var3 var4 var5 var6 var7 var8
#> <chr> <lgl> <lgl> <lgl> <lgl> <lgl> <lgl> <lgl> <lgl>
#> 1 A1.1234567 TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE
您可能需要檢查'duplicated' – akrun