ID= c('A', 'A', 'A', 'B', 'B', 'B')
color=c('white', 'green', 'orange', 'white', 'green', 'green')
d = data.frame (ID, color)
Run Code Online (Sandbox Code Playgroud)
我想要的结果是
unique_colors=c(3,3,3,2,2,2)
d = data.frame (ID, color, unique_colors)
Run Code Online (Sandbox Code Playgroud)
或者在新的数据框架中更清楚c
ID= c('A','B')
unique_colors=c(3,2)
c = data.frame (ID,unique_colors)
Run Code Online (Sandbox Code Playgroud)
我试过的不同组合aggregate
和ave
以及by
和with
我想这是这些功能的组合.
解决方案包括:
length(unique(d$color))
Run Code Online (Sandbox Code Playgroud)
计算唯一元素的数量.
假设我有一个数据集data
:
x1 <- c("a","a","a","a","a","a","b","b","b","b")
x2 <- c("a1","a1","a1","a1","a1","a1","b1","b1","b2","b2")
data <- data.frame(x1,x2)
x1 x2
a a1
a a1
a a2
a a1
a a2
a a3
b b1
b b1
b b2
b b2
Run Code Online (Sandbox Code Playgroud)
我想找到x1
对应的唯一值的数量x2
例如a
,只有3个唯一值(a1,a2
和a3
)并且b
有2个值(b1
和b2
)
我使用aggregate(x1~.,data,sum)
但它没有用,因为这些是因素,而不是整数.
请帮忙
如何计算每个页面名称的不同访问 ID 的数量?
visit_id post_pagename
1 A
1 B
1 C
1 D
2 A
2 A
3 A
3 B
Run Code Online (Sandbox Code Playgroud)
结果应该是:
post_pagename distinct_visit_ids
A 3
B 2
C 1
D 1
Run Code Online (Sandbox Code Playgroud)
试过
test_df<-data.frame(cbind(c(1,1,1,1,2,2,3,3),c("A","B","C","D","A","A","A","B")))
colnames(test_df)<-c("visit_id","post_pagename")
test_df
test_df %>%
group_by(post_pagename) %>%
summarize(vis_count = n_distinct(visit_id))
Run Code Online (Sandbox Code Playgroud)
但这只给了我数据集中不同的visit_id数量
Tid <- c(1,1,2,2,2,3,4,4)
Uid <- c(10,10,11,11,12,13,10,14)
Data <- data.frame(Tid,Uid)
Run Code Online (Sandbox Code Playgroud)
我想知道每个Tid上有多少不同的Uid.我的结果应该是这样的.
Tid, freqUid
1, 1
2, 2
3, 1
4, 2
Run Code Online (Sandbox Code Playgroud)
我试图在它上面使用count但是在一个变量上使用它有一些问题.
我有一个数据表可以减少到这个:
set.seed(1);
dt<-data.table(form=c(1,1,1,2,3,3,3,4,4,5),
mx=c("a","b","c","d","e","f","g","e","g","b"),
vr=runif(10,100,200),
usr=c("l","l","l","m","o","o","o","l","l","m"),
type=c("A","A","A","C","C","C","C","C","C","A"))
Run Code Online (Sandbox Code Playgroud)
我可以生成一个表格:
dt[,
list(n.form=length(unique(form)),n.mx=length(unique(mx)),tot.vr=sum(vr)),
by=usr]
Run Code Online (Sandbox Code Playgroud)
我无法计算的是A类公式的数量(每行是观察值,form
是公式数).我试过了:
dt[,
list(n.form=length(unique(form)),n.mx=length(unique(mx)),tot.vr=sum(vr),n.A=sum(type=="A"),
by=usr]
Run Code Online (Sandbox Code Playgroud)
并且:
dt[,
list(n.form=length(unique(form)),n.mx=length(unique(mx)),tot.vr=sum(vr),n.A=length(unique(type=="A"))),
by=usr]
Run Code Online (Sandbox Code Playgroud)
但是没有一个考虑到发现的"A"数量需要与唯一的公式(form
)数量相关的事实.
我想要的结果是:
usr n.form n.mx tot.vr n.A
1: l 2 5 750.0398 1
2: m 2 2 296.9994 1
3: o 1 3 504.4747 0
Run Code Online (Sandbox Code Playgroud)
但我找不到实现它的方法.任何光棚都非常受欢迎.谢谢,
======= 编辑添加 ========
我想知道有多少公式(唯一数字dt$form
)是"A"类型(因此我可以计算总公式中的一部分).直接数(sum
)是类型A 的观察总数,而存在(any
)给出了我是否至少有一个类型为"A" 的公式,而不是该类型的公式数(这是我想要的) ).请注意,任何给定的公式将始终为"A"或"C"类型(在一个公式中不是混合类型)