R提取频率
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
派对迟到了,我对使用分组或 rowSums()
的复杂答案感到非常惊讶。
在基础 R 中,我会
- 通过使用
duplicated(id)
、 进行子集化,从 data.frame 中删除重复的 id
行
- 在
gender
列上应用 table()
。
所以,代码是
table(data[duplicated(data$id), "gender"])
f m
1 2
我正在尝试获取频率,但我的 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
派对迟到了,我对使用分组或 rowSums()
的复杂答案感到非常惊讶。
在基础 R 中,我会
- 通过使用
duplicated(id)
、 进行子集化,从 data.frame 中删除重复的 - 在
gender
列上应用table()
。
id
行
所以,代码是
table(data[duplicated(data$id), "gender"])
f m 1 2