[英]R extracting the frequencies
我正在尝试获取频率,但我的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
我想获得性别类别的频率,但是我重复输入ID。 当我在下面运行此代码时:
gender<-as.data.frame(table(data$gender))
> gender
Var1 Freq
1 f 2
2 m 4
频率应为女性= 1,男性= 2。 它应如下所示:
> gender
Var1 Freq
1 f 1
2 m 2
考虑到ID信息,如何获得此信息?
您可以使用data.table::uniqueN
来计算每个性别组的唯一ID数量
library(data.table)
setDT(data)
data[, .(Freq = uniqueN(id)), gender]
# gender Freq
# 1: m 2
# 2: f 1
@IceCreamToucan和dplyr
的想法:
data %>%
group_by(gender) %>%
summarise(freq = n_distinct(id))
gender freq
<fct> <int>
1 f 1
2 m 2
在基数R中
rowSums(table(data$gender,data$id)!=0)
f m
1 2
晚会迟到了,我对使用grouping或rowSums()
的复杂答案感到惊讶。
在基数R中,我会
duplicated(id)
子集从data.frame中删除重复的id
行, gender
列上应用table()
。 所以,代码是
table(data[duplicated(data$id), "gender"])
fm 1 2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.