0 votes
in SoSci Survey (dt.) by s085743 (110 points)

Hallo,

ich habe meine Daten nach eurer Anleitung ("Skript, alles ausführen, Datenimport")
in R eingelesen.

Die Daten erscheinen auch beim Befehl > str(data).

Allerdings bekomme ich beim Befehl > table bei allen Variablen immer nur den Wert 1 ausgegeben.

Entsprechend kann das Programm gar nicht mit den Daten arbeiten.

Habe ich beim Einlesen einen Fehler gemacht?

1 Answer

0 votes
by SoSci Survey (305k points)

Bitte prüfen Sie zunächst, ob Sie alle Fälle haben ("Auswahlkritierien für gültige Fälle", s. auch Problemlösungen beim Datenabruf).

Verwenden Sie RStudio? Wenn ja, dann prüfen Sie bitte mittels View(data) (großes "V"), ob die Daten korrekt vorliegen.

Lassen Sie sich auch einmal das ausgeben, was in der jeweiligen Variable gespeichert ist. Passend zu einem

table(data$AB01)

also zum Beispiel

data$AB01
by s085743 (110 points)
Ja, ich benutze RStudio.

Wenn ich den Befehl view(data) eingebe kommt das hier:

function (..., list = character(), package = NULL, lib.loc = NULL,
    verbose = getOption("verbose"), envir = .GlobalEnv)
{
    fileExt <- function(x) {
        db <- grepl("\\.[^.]+\\.(gz|bz2|xz)$", x)
        ans <- sub(".*\\.", "", x)
        ans[db] <- sub(".*\\.([^.]+\\.)(gz|bz2|xz)$", "\\1\\2",
            x[db])
        ans
    }
    names <- c(as.character(substitute(list(...))[-1L]), list)
    if (!is.null(package)) {
        if (!is.character(package))
            stop("'package' must be a character string or NULL")
        if (any(package %in% "base"))
            warning("datasets have been moved from package 'base' to package 'datasets'")
        if (any(package %in% "stats"))
            warning("datasets have been moved from package 'stats' to package 'datasets'")
        package[package %in% c("base", "stats")] <- "datasets"
    }
    paths <- find.package(package, lib.loc, verbose = verbose)
    if (is.null(lib.loc))
        paths <- c(path.package(package, TRUE), if (!length(package)) getwd(),
            paths)
    paths <- unique(normalizePath(paths[file.exists(paths)]))
    paths <- paths[dir.exists(file.path(paths, "data"))]
    dataExts <- tools:::.make_file_exts("data")
    if (length(names) == 0L) {
        db <- matrix(character(), nrow = 0L, ncol = 4L)
        for (path in paths) {
            entries <- NULL
            packageName <- if (file_test("-f", file.path(path,
                "DESCRIPTION")))
                basename(path)
            else "."
            if (file_test("-f", INDEX <- file.path(path, "Meta",
                "data.rds"))) {
                entries <- readRDS(INDEX)
            }
            else {
                dataDir <- file.path(path, "data")
                entries <- tools::list_files_with_type(dataDir,
                    "data")
                if (length(entries)) {
                    entries <- unique(tools::file_path_sans_ext(basename(entries)))
                    entries <- cbind(entries, "")
                }
            }
            if (NROW(entries)) {
                if (is.matrix(entries) && ncol(entries) == 2L)
                    db <- rbind(db, cbind(packageName, dirname(path),
                        entries))
                else warning(gettextf("data index for package %s is invalid and will be ignored",
                    sQuote(packageName)), domain = NA, call. = FALSE)
            }
        }
        colnames(db) <- c("Package", "LibPath", "Item", "Title")
        footer <- if (missing(package))
            paste0("Use ", sQuote(paste("data(package =", ".packages(all.available = TRUE))")),
                "\n", "to list the data sets in all *available* packages.")
        else NULL
        y <- list(title = "Data sets", header = NULL, results = db,
            footer = footer)
        class(y) <- "packageIQR"
        return(y)
    }
    paths <- file.path(paths, "data")
    for (name in names) {
        found <- FALSE
        for (p in paths) {
            if (file_test("-f", file.path(p, "Rdata.rds"))) {
                rds <- readRDS(file.path(p, "Rdata.rds"))
                if (name %in% names(rds)) {
                    found <- TRUE
                    if (verbose)
                        message(sprintf("name=%s:\t found in Rdata.rds",
                            name), domain = NA)
                    thispkg <- sub(".*/([^/]*)/data$", "\\1",
                        p)
                    thispkg <- sub("_.*$", "", thispkg)
                    thispkg <- paste0("package:", thispkg)
                    objs <- rds[[name]]
                    lazyLoad(file.path(p, "Rdata"), envir = envir,
                        filter = function(x) x %in% objs)
                    break
                }
                else if (verbose)
                    message(sprintf("name=%s:\t NOT found in names() of Rdata.rds, i.e.,\n\t%s\n",
                        name, paste(names(rds), collapse = ",")),
                        domain = NA)
            }
            if (file_test("-f", file.path(p, "Rdata.zip"))) {
                warning("zipped data found for package ", sQuote(basename(dirname(p))),
                    ".\nThat is defunct, so please re-install the package.",
                    domain = NA)
                if (file_test("-f", fp <- file.path(p, "filelist")))
                    files <- file.path(p, scan(fp, what = "",
                        quiet = TRUE))
                else {
                    warning(gettextf("file 'filelist' is missing for directory %s",
                        sQuote(p)), domain = NA)
                    next
                }
            }
            else {
                files <- list.files(p, full.names = TRUE)
            }
            files <- files[grep(name, files, fixed = TRUE)]
            if (length(files) > 1L) {
                o <- match(fileExt(files), dataExts, nomatch = 100L)
                paths0 <- dirname(files)
                paths0 <- factor(paths0, levels = unique(paths0))
                files <- files[order(paths0, o)]
            }
            if (length(files)) {
                for (file in files) {
                    if (verbose)
                        message("name=", name, ":\t file= ...",
                            .Platform$file.sep, basename(file), "::\t",
                            appendLF = FALSE, domain = NA)
                    ext <- fileExt(file)
                    if (basename(file) != paste0(name, ".", ext))
                        found <- FALSE
                    else {
                        found <- TRUE
                        zfile <- file
                        zipname <- file.path(dirname(file), "Rdata.zip")
                        if (file.exists(zipname)) {
                            Rdatadir <- tempfile("Rdata")
                            dir.create(Rdatadir, showWarnings = FALSE)
                            topic <- basename(file)
                            rc <- .External(C_unzip, zipname, topic,
                                Rdatadir, FALSE, TRUE, FALSE, FALSE)
                            if (rc == 0L)
                                zfile <- file.path(Rdatadir, topic)
                        }
                        if (zfile != file)
                            on.exit(unlink(zfile))
                        switch(ext, R = , r = {
                            library("utils")
                            sys.source(zfile, chdir = TRUE, envir = envir)
                        }, RData = , rdata = , rda = load(zfile,
                            envir = envir), TXT = , txt = , tab = ,
                            tab.gz = , tab.bz2 = , tab.xz = , txt.gz = ,
                            txt.bz2 = , txt.xz = assign(name, read.table(zfile,
                                header = TRUE, as.is = FALSE), envir = envir),
                            CSV = , csv = , csv.gz = , csv.bz2 = ,
                            csv.xz = assign(name, read.table(zfile,
                                header = TRUE, sep = ";", as.is = FALSE),
                                envir = envir), found <- FALSE)
                    }
                    if (found)
                        break
                }
                if (verbose)
                    message(if (!found)
                        "*NOT* ", "found", domain = NA)
            }
            if (found)
                break
        }
        if (!found)
            warning(gettextf("data set %s not found", sQuote(name)),
                domain = NA)
    }
    invisible(names)
}

Ist das richtig?

Und wenn ich die einzelnen Variablen abfrage kommt halt immer das hier:

> table(data$CASE)
Error in data$CASE : object of type 'closure' is not subsettable
> table(data$KN01)
Error in data$KN01 : object of type 'closure' is not subsettable

Ich verstehe nicht woran das liegt.

Vielen Dank für die Antwort!!!!!
by SoSci Survey (305k points)
Wie gesagt: Das View() muss mit einem großen "V" geschrieben werden.

Was sagt denn str(data) ? Heißt Ihr Datensatz (data.frame) überhaupt "data"? Den Namen kann man ja beim Herunterladen einstellen. Und es sieht so aus, also ob Sie kein Objekt "data" hätte, sondern stattdessen nur Infos zur Funktion data() erhalten.
by s085743 (110 points)
Ich hatte das V von view im RStudio groß geschrieben.

Mein Datensatz heißt "Data". Ich hatte den Namen beim runterladen nicht verändert.

Vielleicht habe ich bereits beim Einlesen etwas falsch gemacht:
Ich gehe oben links auf file / Import dataset / from text (readr) und wähle das Skript aus.
Danach mache ich das selbe mit dem dazugehörigen Datensatz.
Ist das richtig?

> str(data)
function (..., list = character(), package = NULL, lib.loc = NULL, verbose = getOption("verbose"), envir = .GlobalEnv)
by SoSci Survey (305k points)
Heißt Ihr Datensatz "data" oder "Data"? Das sollte RStudio rechts oben bei "Environment" anzeigen. Wenn es "Data" mit einem großen "D" ist, dann müssten Sie das im R-Code auch überall so benennen:

View(Data)
table(Data$AB01)

Vielleicht ist "data" ein ungünstiger Default-Wert... Wir werden das mit dem nächsten Update mal auf eine Bezeichnung ändern, die nicht genauso heißt, wie einen R-Funktion.

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...