0

I have dataframe something like:

> 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

To something like this:

> myData

  User Similar Percentage
1  A      1    66.7%
2  A      0    33.3%
3  B      1    0%
4  B      0    100%

Question

I want to calculate percentages value 1 and 0 on column similar with specific user.

Any idea on how to do this?

Thanks in advance!

1 Answers1

2

You can use count to count the frequencies for each User and then count the ratio.

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  

In base R, use table with prop.table :

prop.table(table(myData), 1) * 100

# Similar
#User         0         1
#   A  33.33333  66.66667
#   B 100.00000   0.00000

data

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))
Ronak Shah
  • 377,200
  • 20
  • 156
  • 213