R:如何在数据帧的不同列中找到相应的值

R:如何在数据帧的不同列中找到相应的值,r,dataframe,R,Dataframe,我是新来R的,我真的被东西卡住了,这对你来说可能很容易。我有一个数据框,它有大量的数据,比如年龄,它与一个特定的人有关,所以重复。我必须把它分成不同的范围,看看每组有多少人。所以我有这个 ` 现在我有了另一个G/B列,它指示这个人是好是坏(分别为1,0) 需要计算不同年龄组人群中1和0的数量,即“坏”和“好”。 所以数据应该是 Total Bad Good `(1,23] 5912 2912 3000 `. ect。 希望能得到这方面的帮助。也许

我是新来R的,我真的被东西卡住了,这对你来说可能很容易。我有一个数据框,它有大量的数据,比如年龄,它与一个特定的人有关,所以重复。我必须把它分成不同的范围,看看每组有多少人。所以我有这个 `

现在我有了另一个G/B列,它指示这个人是好是坏(分别为1,0) 需要计算不同年龄组人群中1和0的数量,即“坏”和“好”。 所以数据应该是

           Total    Bad   Good
`(1,23]    5912    2912   3000 `.
ect。 希望能得到这方面的帮助。

也许你可以试试

library(data.table)
setDT(dat1)[,list(Total=.N, Bad=sum(GB), Good=sum(!GB)), keyby=range]

#       range Total Bad Good
# 1:    (0,1]    16   7    9
# 2:   (1,23]   257 132  125
# 3:  (23,26]    29  16   13
# 4:  (26,28]    19   8   11
# 5:  (28,33]    60  34   26
# 6:  (33,37]    52  30   22
# 7:  (37,41]    41  19   22
# 8:  (41,46]    56  25   31
# 9:  (46,51]    65  27   38
#10:  (51,57]    57  28   29
#11:  (57,76]   196 110   86
#12:  (76,85]   101  44   57
#13: (85,100]    51  24   27
或者使用
dplyr

library(dplyr)
 dat1 %>%
      group_by(range) %>%
      summarise(Total=n(), Bad=sum(GB), Good=sum(!GB))
或者使用
base R中的
aggregate

  res <- do.call(`data.frame`,aggregate(GB~range, dat1,
                FUN=function(x) c(length(x), sum(x), sum(!x))))
res
  res <- do.call(`data.frame`,aggregate(GB~range, dat1,
                FUN=function(x) c(length(x), sum(x), sum(!x))))
set.seed(42)
dat <- data.frame(AGE= sample(1:90, 1000, replace=TRUE),
                         GB=sample(0:1, 1000, replace=TRUE))

dat1 <- transform(dat, range=cut(AGE, 
           breaks=c(0,1,23,26,28,33,37,41,46,51,57,76,85,100)))