2017-06-07 1 views
0

Ich habe eine Liste von Beobachtungen nach Stichproben gruppiert. Ich möchte die Proben finden, die die meisten identischen Beobachtungen teilen. Eine identische Beobachtung ist, wenn die Start- und Endnummer beide zwischen zwei Abtastwerten übereinstimmen. Ich würde gerne R und vorzugsweise dplyr verwenden, wenn dies möglich ist. Ich habe mich daran gewöhnt, dplyr für eine einfachere Datenverarbeitung zu verwenden, aber diese Aufgabe geht über das hinaus, was ich derzeit tun kann. Ich dachte, die Lösung würde das Gruppieren von Anfang und Ende in eine einzige Variable einschließen: group_by (Anfang, Ende), aber ich muss auch die Information darüber behalten, zu welcher Stichprobe jede Beobachtung gehört und zwischen Stichproben vergleichen.Anzahl der gemeinsamen Beobachtungen zwischen den Proben mit dplyr

Beispiel:

sample start end 
a 2 4 
a 3 6 
a 4 8 
b 2 4 
b 3 6 
b 10 12 
c 10 12 
c 0 4 
c 2 4 

Hier Proben a, b und c Anteil 1 Beobachtung (2, 4) Probe a und b Teile 2 Beobachtungen (2 4, 3 6) Probe b und c Teile 2 Beobachtungen (2 4, 10 12) Probe a und c 1 Anteil Beobachtung (2 4)

I wie ein Ausgang möge:

abc 1 
ab 2 
bc 2 
ac 1 

und al so zu sehen, was die gemeinsamen Beobachtungen sind, wenn möglich:

abc 2 4 
ab 2 4 
ab 3 6 

etc

Vielen Dank im Voraus

Antwort

1

Hier ist etwas, das bekommen, sollten Sie gehen:

df %>% 
    group_by(start, end) %>% 
    summarise(
    samples = paste(unique(sample), collapse = ""), 
    n = length(unique(sample))) 

# Source: local data frame [5 x 4] 
# Groups: start [?] 
# 
# start end samples  n 
# <int> <int> <chr> <int> 
# 1  0  4  c  1 
# 2  2  4  abc  3 
# 3  3  6  ab  2 
# 4  4  8  a  1 
# 5 10 12  bc  2 
1

Hier ist eine Idee, über Basis R,

final_d <- data.frame(count1 = sapply(Filter(nrow, split(df, list(df$start, df$end))), nrow), 
         pairs1 = sapply(Filter(nrow, split(df, list(df$start, df$end))), function(i) paste(i[[1]], collapse = ''))) 

#  count1 pairs1 
#0.4  1  c 
#2.4  3 abc 
#3.6  2  ab 
#4.8  1  a 
#10.12  2  bc 
Verwandte Themen