R提取频率

时间:2019-07-09 20:23:00

标签: r data.table frequency

我正在尝试获取频率,但是我的ID正在重复。这是一个示例数据:

$paramCount

我想获取性别类别的频率,但是我重复输入ID。当我在下面运行此代码时:

id <- c(1,1,2,2,3,3)
gender <- c("m","m","f","f","m","m")
score <- c(10,5,10,5,10,5)
data <- data.frame("id"=id,"gender"=gender, "score"=score)

> data
  id gender score
1  1      m    10
2  1      m     5
3  2      f    10
4  2      f     5
5  3      m    10
6  3      m     5

频率应为女性= 1,男性= 2。如下所示:

gender<-as.data.frame(table(data$gender))
> gender
  Var1 Freq
1    f    2
2    m    4

考虑到ID信息,如何获得此信息?

4 个答案:

答案 0 :(得分:2)

您可以使用data.table::uniqueN计算每个性别组的唯一ID的数量

library(data.table)
setDT(data)

data[, .(Freq = uniqueN(id)), gender]

#    gender Freq
# 1:      m    2
# 2:      f    1

答案 1 :(得分:2)

@IceCreamToucan的想法与dplyr

data %>%
 group_by(gender) %>%
 summarise(freq = n_distinct(id))

  gender  freq
  <fct>  <int>
1 f          1
2 m          2

答案 2 :(得分:1)

以R为底

rowSums(table(data$gender,data$id)!=0)
f m 
1 2 

答案 3 :(得分:1)

参加聚会很晚,我很惊讶使用分组或rowSums()的复杂答案。

在基数R中,我会

  1. 通过用id进行子设置,从data.frame中删除重复的duplicated(id)行,
  2. table()列上应用gender

所以,代码是

table(data[duplicated(data$id), "gender"])
f m 
1 2