如何仅为R中的特定行计算列中值的数量和出现次数

时间:2018-04-22 16:09:39

标签: r dataframe

例如,如果我的数据看起来像这样:

Group   Smoker
1       Ex
1       None
1       None
2       Current
1       Current
2       Ex
2       None

我想计算第1组中Ex,none和当前吸烟者的%或数量以及第2组中ex,none和当前吸烟者的%或数量

是否有一个简单的代码来执行此操作?

1 个答案:

答案 0 :(得分:0)

我们可以使用包计算计数和百分比。

library(dplyr)

# Count
dat2 <- dat %>%
  count(Group, Smoker)

dat2
# # A tibble: 6 x 3
#   Group Smoker      n
#   <int> <chr>   <int>
# 1     1 Current     1
# 2     1 Ex          1
# 3     1 None        2
# 4     2 Current     1
# 5     2 Ex          1
# 6     2 None        1

# Percentage
dat3 <- dat2 %>%
  group_by(Group) %>%
  mutate(Percent = n/ sum(n) * 100) %>%
  ungroup()

dat3
# # A tibble: 6 x 4
#   Group Smoker      n Percent
#   <int> <chr>   <int>   <dbl>
# 1     1 Current     1    25.0
# 2     1 Ex          1    25.0
# 3     1 None        2    50.0
# 4     2 Current     1    33.3
# 5     2 Ex          1    33.3
# 6     2 None        1    33.3

数据

dat <- read.table(text = "Group   Smoker
1       Ex
                  1       None
                  1       None
                  2       Current
                  1       Current
                  2       Ex
                  2       None",
                  header = TRUE, stringsAsFactors = FALSE)