如何基于相同的值计算R数据帧中的百分比?
我有一个数据框架,类似于:如何基于相同的值计算R数据帧中的百分比?,r,R,我有一个数据框架,类似于: > myData User Similar 1 A 1 2 A 1 3 A 1 4 A 1 5 A 0 6 A 0 7 B 0 8 B 0 9 B 0 对这样的事情: > myData User Similar Percentage 1 A 1 66.7% 2 A 0 33.3% 3 B 1 0% 4
> myData
User Similar
1 A 1
2 A 1
3 A 1
4 A 1
5 A 0
6 A 0
7 B 0
8 B 0
9 B 0
对这样的事情:
> myData
User Similar Percentage
1 A 1 66.7%
2 A 0 33.3%
3 B 1 0%
4 B 0 100%
问题
我想计算与特定用户类似的列上的百分比值1和0
你知道怎么做吗
提前谢谢 您可以使用
count
计算每个用户的频率,然后计算比率
library(dplyr)
myData %>%
mutate(Similar = factor(Similar)) %>%
count(User, Similar, .drop = FALSE, name = 'Percentage') %>%
group_by(User) %>%
mutate(Percentage = Percentage/sum(Percentage) * 100)
# User Similar Percentage
# <chr> <fct> <dbl>
#1 A 0 33.3
#2 A 1 66.7
#3 B 0 100
#4 B 1 0
数据
myData <- structure(list(User = c("A", "A", "A", "A", "A", "A", "B", "B",
"B"), Similar = c(1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L)),
class = "data.frame", row.names = c(NA, -9L))
myData感谢您的回答。我可以使用count,但结果与使用prob.table类似吗?您可以将%%>%pivot\u加宽(name\u from=simple,value\u from=Percentage)
添加到答案中。
myData <- structure(list(User = c("A", "A", "A", "A", "A", "A", "B", "B",
"B"), Similar = c(1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L)),
class = "data.frame", row.names = c(NA, -9L))