Ich habe eine Liste von zwei Datenrahmen df1 und df2 (siehe unten für die Daten). Für jeden Datenrahmen versuche ich zwei zusammenfassende Zahlen zu erhalten: 1) Zählungen von Pat und Ben und 2) Anzahl von Konkordanzvorkommen zwischen den Spalten a und b (0/0 oder 1/1) für Pat und Ben. Mit dplyr, kann ich diese Zahlen bekommt einzeln aus dem Datenrahmen wie so (zB für df1 in der Liste unten in dput(my_list)
:Anwenden von Funktionen über eine Liste von Datenrahmen, um zusammenfassende Werte zu erhalten
final_table<-mutate(df1,dam=apply(df1[,c(1:2)],1,function(x)length(grep("1",as.factor(x)))))%>%mutate(tol=apply(df1[,c(1:2)],1,function(x)length(grep("0",as.factor(x)))))%>% mutate(prop.concordant=ifelse(dam==0,1,dam/(dam+tol)))%>%group_by(c)%>%summarise(count=n(),complete_concordance_num=length(which(prop.concordant==1)))
, die wie folgt aussieht:
> final_table
# A tibble: 2 x 3
c count complete_concordance_num
<chr> <int> <int>
1 Ben 43 37
2 Pat 57 55
Ich bin jedoch mit Probleme, die dies über eine Liste von Datenrahmen dh df1 und df2 in einer Liste implementieren Entweder lapply
oder purrr::map
scheint nicht zu funktionieren.Die Hürde scheint zu verschiedenen Spaltennamen (Spalte 1 und 2) für jeden Datenrahmen zu sein Hinweise!
Hier eine Testliste ist (die aktuelle Liste enthält 500 Datenrahmen, die jeweils mit unterschiedlichen Namen der Spalten 1 und 2):
dput(my_list)
list(structure(list(a = c("0", "0", "1", "1", "1", "1", "1",
"0", "0", "0", "1", "1", "1", "1", NA, "1", "0", "0", "1", "1",
"1", NA, "1", "1", "1", "0", "0", "1", "1", "0", "1", "1", "0",
"1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0", "1", "0",
"1", "1", "1", NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
"0", "1", "1", "1", "1", "1", "1", "0", "1", "0", "1", "0", "1",
"1", "0", NA, NA, "0", NA, "1", "0", "1", "1", "1", "1", "1",
"1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1"
), b = c("1", "0", "1", "1", "1", "1", "1", "0", "0", "0", "1",
"1", "1", "1", "1", "1", "1", "0", "1", "1", "1", "1", "1", "0",
"1", "0", "1", "1", "1", "1", "1", "1", "0", "1", "1", "1", "1",
"1", "1", "1", "1", "1", "1", "0", "0", "1", "1", "1", "1", "1",
"0", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0", "1",
"1", "1", "1", "1", "1", "0", "1", "0", "1", "0", "1", "1", "0",
"1", "1", "0", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1",
"1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1"), c = c("Pat",
"Ben", "Pat", "Pat", "Pat", "Pat", "Pat", "Ben", "Ben", "Ben",
"Ben", "Ben", "Ben", "Ben", "Ben", "Ben", "Ben", "Ben", "Ben",
"Ben", "Ben", "Ben", "Ben", "Ben", "Ben", "Ben", "Ben", "Ben",
"Pat", "Ben", "Pat", "Pat", "Ben", "Pat", "Pat", "Pat", "Pat",
"Pat", "Pat", "Pat", "Pat", "Ben", "Ben", "Ben", "Ben", "Ben",
"Pat", "Pat", "Pat", "Ben", "Ben", "Pat", "Pat", "Pat", "Pat",
"Pat", "Pat", "Pat", "Pat", "Pat", "Pat", "Ben", "Pat", "Pat",
"Pat", "Ben", "Pat", "Ben", "Ben", "Pat", "Ben", "Pat", "Ben",
"Pat", "Pat", "Ben", "Ben", "Ben", "Ben", "Ben", "Ben", "Pat",
"Pat", "Pat", "Pat", "Pat", "Pat", "Pat", "Pat", "Pat", "Pat",
"Pat", "Pat", "Pat", "Pat", "Pat", "Pat", "Pat", "Pat", "Pat"
)), .Names = c("a", "b", "c"), row.names = c(NA, 100L), class = "data.frame"),
structure(list(x = c("0", "0", "1", "1", "1", "1", "1", "0",
"0", "0", "1", "1", "1", "1", NA, "1", "0", "0", "1", "1",
"1", NA, "1", "1", "1", "0", "0", "1", "1", "0", "1", "1",
"0", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0",
"1", "0", "1", "1", "1", NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, "0", "1", "1", "1", "1", "1", "1", "0", "1",
"0", "1", "0", "1", "1", "0", NA, NA, "0", NA, "1", "0",
"1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1",
"1", "1", "1", "1", "1", "1"), y = c("1", "0", "1", "1",
"1", "1", "1", "0", "0", "0", "1", "0", "1", "1", "0", "1",
"1", "0", "1", "0", "0", "0", "0", "1", "1", "0", "0", "1",
"1", "0", "1", "1", "0", "1", "1", "1", "1", "1", "1", "1",
"1", "0", "0", "0", "0", "0", "1", "1", "0", "0", "0", "1",
"1", "1", "1", "1", "1", "1", "1", "1", "1", "0", "1", "1",
"1", "1", "1", "0", "0", "1", "0", "1", "0", "1", "1", "0",
"0", "0", "1", "0", "0", "1", "1", "1", "1", "1", "1", "1",
"1", "1", "0", "0", "1", "1", "1", "1", "1", "1", "1", "1"
), c = c("Pat", "Ben", "Pat", "Pat", "Pat", "Pat", "Pat",
"Ben", "Ben", "Ben", "Ben", "Ben", "Ben", "Ben", "Ben", "Ben",
"Ben", "Ben", "Ben", "Ben", "Ben", "Ben", "Ben", "Ben", "Ben",
"Ben", "Ben", "Ben", "Pat", "Ben", "Pat", "Pat", "Ben", "Pat",
"Pat", "Pat", "Pat", "Pat", "Pat", "Pat", "Pat", "Ben", "Ben",
"Ben", "Ben", "Ben", "Pat", "Pat", "Pat", "Ben", "Ben", "Pat",
"Pat", "Pat", "Pat", "Pat", "Pat", "Pat", "Pat", "Pat", "Pat",
"Ben", "Pat", "Pat", "Pat", "Ben", "Pat", "Ben", "Ben", "Pat",
"Ben", "Pat", "Ben", "Pat", "Pat", "Ben", "Ben", "Ben", "Ben",
"Ben", "Ben", "Pat", "Pat", "Pat", "Pat", "Pat", "Pat", "Pat",
"Pat", "Pat", "Pat", "Pat", "Pat", "Pat", "Pat", "Pat", "Pat",
"Pat", "Pat", "Pat")), .Names = c("x", "y", "c"), row.names = c(NA,
100L), class = "data.frame"))
Es versuchen, sind NA-Werte als Gut. In dem Code wird nicht gezeigt, wie Sie es behandeln wollen – akrun
@akrun Ja sollte erwähnt haben. Es gibt NAs. Wenn die Funktion auf vollständigen Fällen funktioniert, ist das in Ordnung. Danke für das Aufzeigen. – thisisrg