根据条件创建数据集

时间:2016-06-19 11:37:31

标签: r

我有数据集new,变量a b和c

a          b     c
hdjfh      434   876
sdfdsf     34    98
gfdsdfdsf  534   672 
rsdfdsf    65    87
gsdfdsf    67    54
vbvnn      98    09
gkhjgfk    100   768
rknfg      78    3546

我想创建两个数据集,使得数据集new1需要满足条件b> 110或c> 110。第二个数据集new2将具有条件b> 110或c> 110

不满足的记录

1 个答案:

答案 0 :(得分:2)

如果要将两个数据集分配给新变量,可以执行以下操作:

df <- data.frame(a=c('hdjfh','sdfdsf','gfdsdfdsf','rsdfdsf','gsdfdsf','vbvnn','gkhjgfk','rknfg'),b=c(434L,34L,534L,65L,67L,98L,100L,78L),c=c(876L,98L,672L,87L,54L,9L,768L,3546L),stringsAsFactors=F);
cond <- df$b>110|df$c>110;
new1 <- df[cond,];
new2 <- df[!cond,];
new1;
##           a   b    c
## 1     hdjfh 434  876
## 3 gfdsdfdsf 534  672
## 7   gkhjgfk 100  768
## 8     rknfg  78 3546
new2;
##         a  b  c
## 2  sdfdsf 34 98
## 4 rsdfdsf 65 87
## 5 gsdfdsf 67 54
## 6   vbvnn 98  9

另一种选择是使用split()来获取列表:

split(df,df$b>110|df$c>110);
## $`FALSE`
##         a  b  c
## 2  sdfdsf 34 98
## 4 rsdfdsf 65 87
## 5 gsdfdsf 67 54
## 6   vbvnn 98  9
##
## $`TRUE`
##           a   b    c
## 1     hdjfh 434  876
## 3 gfdsdfdsf 534  672
## 7   gkhjgfk 100  768
## 8     rknfg  78 3546
##