2016-08-08 7 views
-1

In meinem speziellen Fall möchte ich die Daten in Datenrahmenspalte zu booleschen/logischen Werten abhängig von einer Bedingung konvertieren. Aber ich denke, meine Frage könnte für jede Umwandlung/Umwandlung eine eigene Datenrahmenspalte besitzen?Transformieren oder konvertieren Sie die Spalte eines Datenrahmens in R

Beispiel:

> sleep 
    extra group ID 
1 0.7  1 1 
2 -1.6  1 2 
3 -0.2  1 3 
4 -1.2  1 4 
5 -0.1  1 5 
6 3.4  1 6 
7 3.7  1 7 
8 0.8  1 8 
9 0.0  1 9 
10 2.0  1 10 
11 1.9  2 1 
12 0.8  2 2 
13 1.1  2 3 
14 0.1  2 4 
15 -0.1  2 5 
16 4.4  2 6 
17 5.5  2 7 
18 1.6  2 8 
19 4.6  2 9 
20 3.4  2 10 
> L = sleep$extra < 0 
> L 
[1] FALSE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE 
[13] FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE 

I L möchte eine Spalte innerhalb des Datenrahmens sein (oder eines neuen).

+0

downvote ohne Kommentar verwandeln? meine Frage zu dumm? – buhtz

Antwort

1

Dies fügt eine neue Spalte mit dem Namen L hinzu und weist ihr die Werte (sleep$extra < 0) zu.

sleep["L"] <- sleep$extra < 0 


# extra group ID  L 
#1 0.7  1 1 FALSE 
#2 -1.6  1 2 TRUE 
#3 -0.2  1 3 TRUE 
#4 -1.2  1 4 TRUE 
#5 -0.1  1 5 TRUE 
#6 3.4  1 6 FALSE 
#7 3.7  1 7 FALSE 
#8 0.8  1 8 FALSE 
#9 0.0  1 9 FALSE 
#10 2.0  1 10 FALSE 
#11 1.9  2 1 FALSE 
#12 0.8  2 2 FALSE 
#13 1.1  2 3 FALSE 
#14 0.1  2 4 FALSE 
#15 -0.1  2 5 TRUE 
#16 4.4  2 6 FALSE 
#17 5.5  2 7 FALSE 
#18 1.6  2 8 FALSE 
#19 4.6  2 9 FALSE 
#20 3.4  2 10 FALSE 

oder Sie können cbind

cbind(sleep, L) 

, die eine neue Spalte (L), um Ihre sleep Datenrahmen hinzufügen.

Wenn Sie dieselbe Spalte (extra) durch boolesche/logische Werte ersetzen möchten, können Sie die Werte derselben Variablen zuweisen.

sleep$extra <- sleep$extra < 0 


# extra group ID 
#1 FALSE  1 1 
#2 TRUE  1 2 
#3 TRUE  1 3 
#4 TRUE  1 4 
#5 TRUE  1 5 
#6 FALSE  1 6 
#7 FALSE  1 7 
#8 FALSE  1 8 
#9 FALSE  1 9 
#10 FALSE  1 10 
#11 FALSE  2 1 
#12 FALSE  2 2 
#13 FALSE  2 3 
#14 FALSE  2 4 
#15 TRUE  2 5 
#16 FALSE  2 6 
#17 FALSE  2 7 
#18 FALSE  2 8 
#19 FALSE  2 9 
#20 FALSE  2 10 
+0

Und was genau macht das? Können Sie Ihre Lösung ein wenig erklären? – buhtz

+1

@buhtz zusätzliche Erklärung hinzugefügt! –

1

Sie können die Spalte auf mehrere Arten

sleep <- within(sleep, l <- extra < 0) (or) 

sleep <- transform(sleep, l = extra<0) (or) 

library(dplyr) 
sleep <- sleep %>% 
    mutate(L = extra < 0) 

extra group ID  L 
1 0.7  1 1 FALSE 
2 -1.6  1 2 TRUE 
3 -0.2  1 3 TRUE 
4 -1.2  1 4 TRUE 
5 -0.1  1 5 TRUE 
6 3.4  1 6 FALSE 
7 3.7  1 7 FALSE 
8 0.8  1 8 FALSE 
9 0.0  1 9 FALSE 
10 2.0  1 10 FALSE 
11 1.9  2 1 FALSE 
12 0.8  2 2 FALSE 
13 1.1  2 3 FALSE 
14 0.1  2 4 FALSE 
15 -0.1  2 5 TRUE 
16 4.4  2 6 FALSE 
17 5.5  2 7 FALSE 
18 1.6  2 8 FALSE 
19 4.6  2 9 FALSE 
20 3.4  2 10 FALSE