在 R 的列中查找唯一值

问题描述 投票:0回答:2

我有视频数据,我正在尝试制作一个新表格,总结视频中迄今为止唯一用户数量的信息。第一个表是我所拥有的,第二个表是我正在使用 R 寻找的表。我尝试按视频和分钟进行分组,但这只为我提供了那一分钟的唯一用户。

用户 视频 分钟
a V1 1
b V1 1
b V1 1
c V1 1
d V1 2
c V1 2
e V1 2
a V2 1
b V2 2
c V2 2
视频 分钟 独特用户
V1 1 3
V1 2 5
V2 1 1
V2 2 3
r group-by unique
2个回答
0
投票
library(dplyr)
df |>
  summarize(Unique_users = n_distinct(User), .by = c(Video, Minute))

结果(尽管与问题不同,但数据看起来正确)

  Video Minute Unique_users
1    V1      1            3
2    V1      2            3
3    V2      1            1
4    V2      2            2

0
投票

我认为您正在寻找的是不同用户的累积计数,因此在

Minute=2
中,您想要计算
Minute
1和2中的所有用户。

dplyr

library(dplyr)
summarize(quux, .by = c("Video", "Minute"), Users = list(User)) |>
  mutate(
    .by = "Video",
    UniqueUsers = sapply(1:n(), function(i) n_distinct(unlist(Users[1:i])))
  )
#   Video Minute      Users UniqueUsers
# 1    V1      1 a, b, b, c           3
# 2    V1      2    d, c, e           5
# 3    V2      1          a           1
# 4    V2      2       b, c           3

数据

quux <- structure(list(User = c("a", "b", "b", "c", "d", "c", "e", "a", "b", "c"), Video = c("V1", "V1", "V1", "V1", "V1", "V1", "V1", "V2", "V2", "V2"), Minute = c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 2L, 2L)), class = "data.frame", row.names = c(NA, -10L))
© www.soinside.com 2019 - 2024. All rights reserved.