2016-08-08 61 views
-1

在我的特殊情况下,我想根据条件将数据帧列中的数据转换为布尔值/逻辑值。但我认为我的问题可以用于每个对话/转换拥有一个数据框列?转换或转换R中的数据帧的列

实施例:

> 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 

我想L为数据帧(或一个新的)内的一列。

+0

downvote没有评论?我的问题愚蠢? – buhtz

回答

1

这将添加一个名为L的新列,并为其分配值(sleep$extra < 0)。

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 

,或者你可以cbind

cbind(sleep, L) 

将新列(L)添加到您的sleep数据帧。

如果您想用布尔值/逻辑值替换同一列(extra),您可以将值分配给同一个变量。

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

这到底是什么?你能解释一下你的解决方案吗? – buhtz

+1

@buhtz补充说明! –

1

您可以以多种方式变换列

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