2016-08-02 6 views
1

Ich habe 2 csv-Datei, die die Daten aussehen, die die gleiche R-Datei laufen, ich habe Hunderte von Zeilen und Spalten zu laufen, möchte ich die 1 konvertieren = Enroll, 0 = beenden „“ = Keine Daten:Konvertieren Wert in R in Multi Spalte

Test <- read.csv("..\\..\TestFile.csv", colClasses = "factor") 
[1] [2] [3] 
1 0    
0 1 
1 1 
1 0 1 

[1] [2] [3] 
1 0    
1 1 
1 0 
1 0 1 

So, far I had tried on 

revalue(Test$1, c("1" = "Enroll")) -> Test$1 
revalue(Test$1, c("0" = "Quit")) -> Test$1 
revalue(Test$2, c("1" = "Enroll")) -> Test$2 
revalue(Test$2, c("0" = "Quit")) -> Test$2 
revalue(Test$3, c("1" = "Enroll")) -> Test$3 
revalue(Test$3, c("0" = "Quit")) -> Test$3 

write.csv(Test, "TestFile.csv", na = "No data") 

But, it promt the warning msg: The following `from` values were not present in `x`: 1. 
The NA string unable to update to "No data". Please help. 

Antwort

0

wir lapply verwenden können, um die Werte in jeder der Spalten zu ändern

Test[] <- lapply(Test, function(x) {x1 <- c("Quit", "Enroll")[x+1] 
        replace(x1, is.na(x1), "No Data")}) 
Test 
# Col1 Col2 Col3 
#1 Enroll Quit Enroll 
#2 Quit Quit No Data 
#3 Quit Quit Quit 
#4 Enroll Enroll No Data 

Wenn wir Hunderte von Spalten haben, ein anderer Ansatz ist mutate_each aus dplyr

library(dplyr) 
library(magrittr) 
Test %<>% 
     mutate_each(funs(c("Quit", "Enroll")[.+1])) %<>% 
     mutate_each(funs(replace(., is.na(.), "No Data"))) 
+0

hatte ich versuche, die Test-[] <- lapply (Test, Funktion (x) ifelse (x == 0, "Anmelden", "Beenden")), nut mein NA-Wert wird Quit, anstatt ich wollte den NA-Wert ersetzen als keine Daten – wow5

+1

@akrun Eine neue Sache für mich ist '% <>%', lassen Sie mich überprüfen, was es tut. Vielen Dank. –

+1

@ SowmyaS.Manian Es wird die Werte in "Test" an Ort und Stelle ändern. Also, wir müssen es nicht zuweisen zu "Test <- Test %>% ..." – akrun

1

I. Erstellt Datenrahmen df mit 1, 0 und NA

df <- data.frame(Col1 = c(1,0,0,1), Col2 = c(0,0,0,1), Col3 = c(1,NA,0,NA)) 
    df 
    # Col1 Col2 Col3 
    # 1 1 0 1 
    # 2 0 0 NA 
    # 3 0 0 0 
    # 4 1 1 NA 

II. Substitution spezifischer Werte

df[df == 0] <- "Quit" 
    df[df == 1] <- "Enroll" 
    df[is.na(df)] <- "No Data" 

III. Finale df

df 
    #  Col1 Col2 Col3 
    # 1 Enroll Quit Enroll 
    # 2 Quit Quit No Data 
    # 3 Quit Quit Quit 
    # 4 Enroll Enroll No Data 

ODER

c(df[is.na(df)] <- "No Data" , df[df == 0] <- "Quit", df[df == 1] <- "Enroll") 
    # [1] "No Data" "Quit" "Enroll" 

    df 
    #  Col1 Col2 Col3 
    # 1 Enroll Quit Enroll 
    # 2 Quit Quit No Data 
    # 3 Quit Quit Quit 
    # 4 Enroll Enroll No Data 
+0

Wenn ich bestimmten Wert ersetzt wurde, wird die Warnmeldung angezeigt In '[<-. Factor' (' * tmp * ', thisvar, value = "Quit"): ungültiger Faktorlevel, NA generiert – wow5

+0

Bitte zeigen Sie den tatsächlichen Befehl, von dem Sie diesen Fehler erhalten haben. Vielleicht wäre es dann besser zu verstehen. –