R 在创建表时剪切值

R 在创建表时剪切值,r,aggregate,R,Aggregate,我有以下类型的数据: mydata <- data.frame (yvar = rnorm(200, 15, 5), xv1 = rep(1:5, each = 40), xv2 = rep(1:10, 20)) table(mydata$xv1, mydata$xv2) 1 2 3 4 5 6 7 8 9 10 1 4 4 4 4 4 4 4 4 4 4 2 4 4 4 4 4 4 4 4 4 4 3 4 4 4 4 4 4 4 4 4 4 4

我有以下类型的数据:

 mydata <- data.frame (yvar = rnorm(200, 15, 5), xv1 = rep(1:5, each = 40),
   xv2 = rep(1:10, 20))

table(mydata$xv1, mydata$xv2)


    1 2 3 4 5 6 7 8 9 10
  1 4 4 4 4 4 4 4 4 4  4
  2 4 4 4 4 4 4 4 4 4  4
  3 4 4 4 4 4 4 4 4 4  4
  4 4 4 4 4 4 4 4 4 4  4
  5 4 4 4 4 4 4 4 4 4  4
因此,我们将对每个cutkey元素使用类似于上述类型的表。我希望每次都有保证金总额

    < 10 - group 1

  1 2 3 4 5 6 7 8 9 10
  1 4 4 4 4 4 4 4 4 4  4
  2 4 4 4 4 4 4 4 4 4  4
  3 4 4 4 4 4 4 4 4 4  4
  4 4 4 4 4 4 4 4 4 4  4
  5 4 4 4 4 4 4 4 4 4  4

   10-12 - group 2

 1 2 3 4 5 6 7 8 9 10
  1 4 4 4 4 4 4 4 4 4  4
  2 4 4 4 4 4 4 4 4 4  4
  3 4 4 4 4 4 4 4 4 4  4
  4 4 4 4 4 4 4 4 4 4  4
  5 4 4 4 4 4 4 4 4 4  4
<10-第1组
1 2 3 4 5 6 7 8 9 10
1 4 4 4 4 4 4 4 4 4  4
2 4 4 4 4 4 4 4 4 4  4
3 4 4 4 4 4 4 4 4 4  4
4 4 4 4 4 4 4 4 4 4  4
5 4 4 4 4 4 4 4 4 4  4
10-12-第2组
1 2 3 4 5 6 7 8 9 10
1 4 4 4 4 4 4 4 4 4  4
2 4 4 4 4 4 4 4 4 4  4
3 4 4 4 4 4 4 4 4 4  4
4 4 4 4 4 4 4 4 4 4  4
5 4 4 4 4 4 4 4 4 4  4
等等,适用于所有群体

(数字将完全不同)


有什么简单的方法吗

是,使用
cut
dlply
plyr软件包)和
addmargins

mydata$yvar1 <- cut(mydata$yvar,breaks = c(-Inf,10,12,16,Inf))
> dlply(mydata,.(yvar1),function(x) addmargins(table(x$xv1,x$xv2)))
$`(-Inf,10]`

       1  2  3  4  5  6  7  8  9 10 Sum
  1    0  0  0  0  0  0  2  0  1  0   3
  2    1  1  0  1  0  0  0  0  2  0   5
  3    0  1  0  0  1  1  0  2  0  0   5
  4    0  0  2  0  1  1  0  1  0  0   5
  5    0  1  1  0  1  1  1  0  0  2   7
  Sum  1  3  3  1  3  3  3  3  3  2  25

$`(10,12]`

       1  2  3  4  6  7  8  9 10 Sum
  1    0  0  0  1  2  0  0  0  0   3
  2    0  0  1  0  0  1  0  0  1   3
  3    0  1  0  1  1  2  0  0  1   6
  4    0  1  0  0  0  0  0  0  0   1
  5    1  0  1  1  1  0  1  1  2   8
  Sum  1  2  2  3  4  3  1  1  4  21

$`(12,16]`

       1  2  3  4  5  6  7  8  9 10 Sum
  1    2  3  1  1  1  2  0  3  0  2  15
  2    0  1  0  1  3  3  2  0  0  1  11
  3    3  1  3  1  0  0  0  2  4  1  15
  4    3  2  1  2  2  0  1  1  4  1  17
  5    3  1  1  2  0  1  1  1  1  0  11
  Sum 11  8  6  7  6  6  4  7  9  5  69

$`(16, Inf]`

       1  2  3  4  5  6  7  8  9 10 Sum
  1    2  1  3  2  3  0  2  1  3  2  19
  2    3  2  3  2  1  1  1  4  2  2  21
  3    1  1  1  2  3  2  2  0  0  2  14
  4    1  1  1  2  1  3  3  2  0  3  17
  5    0  2  1  1  3  1  2  2  2  0  14
  Sum  7  7  9  9 11  7 10  9  7  9  85

attr(,"split_type")
[1] "data.frame"
attr(,"split_labels")
      yvar1
1 (-Inf,10]
2   (10,12]
3   (12,16]
4 (16, Inf]
mydata$yvar1 dlply(mydata,.(yvar1),函数(x)addmargins(表(x$xv1,x$xv2)))
$`(-Inf,10]`
1234567810总和
1    0  0  0  0  0  0  2  0  1  0   3
2    1  1  0  1  0  0  0  0  2  0   5
3    0  1  0  0  1  1  0  2  0  0   5
4    0  0  2  0  1  1  0  1  0  0   5
5    0  1  1  0  1  1  1  0  0  2   7
总和123123325
$`(10,12]`
123467810总和
1    0  0  0  1  2  0  0  0  0   3
2    0  0  1  0  0  1  0  0  1   3
3    0  1  0  1  1  2  0  0  1   6
4    0  1  0  0  0  0  0  0  0   1
5    1  0  1  1  1  0  1  1  2   8
总和1234314121
$`(12,16]`
1234567810总和
1    2  3  1  1  1  2  0  3  0  2  15
2    0  1  0  1  3  3  2  0  0  1  11
3    3  1  3  1  0  0  0  2  4  1  15
4    3  2  1  2  2  0  1  1  4  1  17
5    3  1  1  2  0  1  1  1  1  0  11
总数1186766479569
$`(16,Inf)`
1234567810总和
1    2  1  3  2  3  0  2  1  3  2  19
2    3  2  3  2  1  1  1  4  2  2  21
3    1  1  1  2  3  2  2  0  0  2  14
4    1  1  1  2  1  3  3  2  0  3  17
5    0  2  1  1  3  1  2  2  2  0  14
总数7 7 9 11 7 10 9 7 9 85
属性(,“拆分类型”)
[1] “数据帧”
属性(,“拆分标签”)
yvar1
1(-Inf,10]
2   (10,12]
3   (12,16]
4(16,Inf]

您可以将
breaks
参数调整为
cut
,以获得您想要的值。(虽然您在问题中显示的边距和看起来根本不像边距和。)

谢谢,我将此保存为outv,并尝试访问outv$
(16,Inf)
,但返回null,如何检索列表组件-很好way@RamSharma试试看
outv[[“(16,Inf]”]]
mydata$yvar1 <- cut(mydata$yvar,breaks = c(-Inf,10,12,16,Inf))
> dlply(mydata,.(yvar1),function(x) addmargins(table(x$xv1,x$xv2)))
$`(-Inf,10]`

       1  2  3  4  5  6  7  8  9 10 Sum
  1    0  0  0  0  0  0  2  0  1  0   3
  2    1  1  0  1  0  0  0  0  2  0   5
  3    0  1  0  0  1  1  0  2  0  0   5
  4    0  0  2  0  1  1  0  1  0  0   5
  5    0  1  1  0  1  1  1  0  0  2   7
  Sum  1  3  3  1  3  3  3  3  3  2  25

$`(10,12]`

       1  2  3  4  6  7  8  9 10 Sum
  1    0  0  0  1  2  0  0  0  0   3
  2    0  0  1  0  0  1  0  0  1   3
  3    0  1  0  1  1  2  0  0  1   6
  4    0  1  0  0  0  0  0  0  0   1
  5    1  0  1  1  1  0  1  1  2   8
  Sum  1  2  2  3  4  3  1  1  4  21

$`(12,16]`

       1  2  3  4  5  6  7  8  9 10 Sum
  1    2  3  1  1  1  2  0  3  0  2  15
  2    0  1  0  1  3  3  2  0  0  1  11
  3    3  1  3  1  0  0  0  2  4  1  15
  4    3  2  1  2  2  0  1  1  4  1  17
  5    3  1  1  2  0  1  1  1  1  0  11
  Sum 11  8  6  7  6  6  4  7  9  5  69

$`(16, Inf]`

       1  2  3  4  5  6  7  8  9 10 Sum
  1    2  1  3  2  3  0  2  1  3  2  19
  2    3  2  3  2  1  1  1  4  2  2  21
  3    1  1  1  2  3  2  2  0  0  2  14
  4    1  1  1  2  1  3  3  2  0  3  17
  5    0  2  1  1  3  1  2  2  2  0  14
  Sum  7  7  9  9 11  7 10  9  7  9  85

attr(,"split_type")
[1] "data.frame"
attr(,"split_labels")
      yvar1
1 (-Inf,10]
2   (10,12]
3   (12,16]
4 (16, Inf]