如何获得所选商品的数量?

时间:2019-07-12 17:04:25

标签: r subset frequency

我想以阵列格式列出每个Diet组(有四个)中有多少个Time> 21。

我试图在RStudio中解决此问题。

data(ChickWeight)
newdata <- subset(ChickWeight, Time >= 21, select=Diet)

为了找到newdata中有多少个观测值,我使用了 nrow(newdata), 但是我想通过使它成为该表达式的一部分来找出有多少观察符合标准:

newdata <- subset(ChickWeight, Time >= 21, select=Diet) 

这样,当我显示newdata时,该表还将在新列中包含满足条件的观测值的数量。

期望输出:

Diet   Number Observations
1      200 (I just created the numbers for this column as examples)
2       75
3      150
4      100 

有办法吗?

4 个答案:

答案 0 :(得分:5)

可以在base中完成

transform(table(Diet=subset(ChickWeight, Time >= 21, select=Diet)))

#>   Diet Freq
#> 1    1   16
#> 2    2   10
#> 3    3   10
#> 4    4    9

答案 1 :(得分:1)

我们可以使用summarize中的dplyr来做到这一点:

library(dplyr)

newdata %>%
  group_by(Diet) %>%
  summarize(Num_Obs = n())

我们甚至可以将subset组合到单个dplyr工作流程中:

ChickWeight %>%
  filter(Time >= 21) %>%
  group_by(Diet) %>%
  summarize(Num_Obs = n())

输出:

# A tibble: 4 x 2
  Diet  Num_Obs
  <fct>   <int>
1 1          16
2 2          10
3 3          10
4 4           9

答案 2 :(得分:1)

aggregate调用之后考虑一个简单的subset

newdata <- subset(ChickWeight, Time >= 21, select=Diet)

aggregate(cbind(Obs=Diet) ~ Diet, newdata, FUN=length)

#   Diet Obs
# 1    1  16
# 2    2  10
# 3    3  10
# 4    4   9

答案 3 :(得分:0)

这是数据表方法

library(data.table)
df <- as.data.table(ChickWeight)

df[Time >= 21, .(Number = .N), by = Diet]
#    Diet Number
# 1:    1     16
# 2:    2     10
# 3:    3     10
# 4:    4      9
相关问题