我正在尝试获取频率,但是我的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信息,如何获得此信息?
答案 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中,我会
id
进行子设置,从data.frame中删除重复的duplicated(id)
行,table()
列上应用gender
。所以,代码是
table(data[duplicated(data$id), "gender"])
f m 1 2