Seite 1 von 1

neuer Dataframe

Verfasst: Do Mär 05, 2020 12:48 pm
von Tengo
Hallo liebe Community,

Forum.xlsx
(9.3 KiB) 182-mal heruntergeladen
ich habe folgende Datensatz im Excel (als besipiel erstellt), nur ich möchte ,dass im Weiteren daraus ein Datensatz generieren, wo ich nur die am häufigsten vorkommenden Länder (Somalia, Syrien, Afghanistan) zu stehen habe und die anderen z.B als sonstiges bezeichet und zusammen gefasst wird.

ich habe es mit >summarize und filter versucht aber bin nicht weiter gekommen, könnte mir vllt jemand dabei Helfen ?
Vielen lieben Dank im Voraus!

LG

Re: neuer Dataframe

Verfasst: Do Mär 05, 2020 1:00 pm
von jogo
Hallo Tengo,

willkommen im Forum!
Kannst Du uns bitte zeigen, mit welchem Code Du die Excel-Tabelle in R einliest?

Gruß, Jörg

Re: neuer Dataframe

Verfasst: Do Mär 05, 2020 2:02 pm
von ruedi_br
nächste Frage: allgemein die drei häufigsten Länder?
Grüße
Ruedi

Re: neuer Dataframe

Verfasst: Do Mär 05, 2020 2:33 pm
von Tengo
Hallo Jörg, Hallo Rudi,

erstmal danke für so eine schnelle Ruckmeldung.

Code: Alles auswählen

Forum <- read_excel("C:/Users/User/Desktop/R sacdeli tabelebi/zweite Runde/Forum.xlsx")
mit dem Befehl füge ich Excel in R...(oder war etwas anderes gemeint?)

und ja genau in diesem Fall die drei Länder, weil die quasi am Häufigsten vorkommen (im original Datensatz sieht es bisschen anders aus)

LG Tengo

Re: neuer Dataframe

Verfasst: Do Mär 05, 2020 2:44 pm
von bigben
Wenn man beim Einlesen darauf achtet, dass die Länder nicht als factor, sondern als character eingelesen werden, dann geht es z. B. so:

Code: Alles auswählen

ctry <- structure(list(Herkunftsland = c("Syrien", "Pakistan", "Syrien", 
                                         "Syrien", "Syrien", "Somalia", "Iran", "Guinea", "Guinea", "Irak", 
                                         "Guinea", "Senegal", "Neuguinea", "Irak", "Afghanistan", "Syrien", 
                                         "Syrien", "Irak", "Syrien", "Iran", "Guinea", "Afghanistan", 
                                         "Irak", "Syrien", "Somalia", "Somalia", "Syrien", "Syrien", "Afghanistan", 
                                         "Syrien", "Afghanistan", "Syrien", "Afghanistan", "Afghanistan", 
                                         "Iran", "Iran", "Somalia", "Afghanistan", "Afghanistan", "Guinea", 
                                         "Afghanistan", "Somalia", "Syrien", "Irak", "Somalia", "Somalia", 
                                         "Somalia", "Somalia", "Somalia", "Somalia", "Somalia", "Somalia", 
                                         "Somalia", "Irak", "Somalia", "Somalia", "Syrien", "Syrien"), 
                       Attest = c("nein", "nein", "nein", "nein", "nein", "nein", 
                                  "nein", "nein", "nein", "nein", "nein", "nein", "nein", "nein", 
                                  "nein", "nein", "nein", "nein", "nein", "nein", "nein", "nein", 
                                  "nein", "nein", "nein", "nein", "nein", "nein", "nein", "nein", 
                                  "nein", "nein", "nein", "nein", "nein", "nein", "nein", "nein", 
                                  "nein", "nein", "nein", "nein", "nein", "nein", "nein", "ja", 
                                  "nein", "nein", "nein", "ja", "nein", "ja", "ja", "nein", 
                                  "ja", "ja", "nein", "nein"), Termine = c(3L, 3L, 2L, 3L, 
                                                                           2L, 3L, 1L, 1L, 1L, 2L, 1L, 3L, 3L, 5L, 1L, 3L, 1L, 2L, 5L, 
                                                                           4L, 3L, 3L, 1L, 1L, 3L, 2L, 1L, 1L, 6L, 1L, 3L, 1L, 3L, 2L, 
                                                                           1L, 7L, 7L, 2L, 5L, 1L, 2L, 6L, 4L, 3L, 1L, 20L, 2L, 2L, 
                                                                           4L, 16L, 2L, 3L, 3L, 7L, 11L, 6L, 3L, 4L)), .Names = c("Herkunftsland", 
                                                                                                                                  "Attest", "Termine"), class = "data.frame", row.names = c(NA, 
                                                                                                                                                                                            -58L))

sonstige <- names(which(table(ctry$Herkunftsland) < 3))
print(sonstige)
ctry$Land <- ifelse(ctry$Herkunftsland %in% sonstige, "Sonstige", ctry$Herkunftsland)
head(ctry, 10)
LG,
Bernhard

Re: neuer Dataframe

Verfasst: Do Mär 05, 2020 3:04 pm
von Tengo
Hallo Bernhard,

es hat alles wünderbar geklappt, habe halt 3 an für mich relevanten Zahlen angepasst.

vielen, vielen Dank!

LG
Tengo

Re: neuer Dataframe

Verfasst: Do Mär 05, 2020 3:26 pm
von jogo
Hallo Tengo,

oder die drei häufigsten:

Code: Alles auswählen

library("readxl")
### setwd(...)
Forum <- read_excel("Forum.xlsx")

N <- names(sort(table(Forum$Herkunftsland), decr=TRUE))[1:3]
Forum$l <- ifelse(Forum$Herkunftsland %in% N, Forum$Herkunftsland, "sonst")
Gruß, Jörg

Re: neuer Dataframe

Verfasst: Do Mär 05, 2020 3:54 pm
von Tengo
Hallo Jörg,

Vielen Dank!

LG
Tengo