R语言 如何获得选定内容中的项目数?

cpjpxq1n  于 2023-04-03  发布在  其他
关注(0)|答案(4)|浏览(100)

我想以数组格式列出每个饮食组(有四个)中有多少人的时间〉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

有办法做到吗?

fcipmucu

fcipmucu1#

可以在base中实现:

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

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

pftdvrlh2#

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

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
y3bcpkx1

y3bcpkx13#

我们可以从dplyr中使用summarize

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
6kkfgxo0

6kkfgxo04#

下面是一个数据表方法

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

相关问题