Reputation: 2584
I have a data looking like this
df <- structure(list(Mydf = c("TNFM00000001497", "TNFM00000001617",
"TNFM00000001617", "TNFM00000001617", "TNFM00000001617", "TNFM00000001626",
"TNFM00000001626", "TNFM00000001626", "TNFM00000001626", "TNFM00000001629",
"TNFM00000001629", "TNFM00000001630", "TNFM00000001630", "TNFM00000001630"
)), class = "data.frame", row.names = c(NA, -14L))
I want to count how many times a string is repeated and then give me an example output like this
String Number of repeat
TNFM00000001497 1
TNFM00000001617 4
TNFM00000001626 4
TNFM00000001629 2
TNFM00000001630 3
Upvotes: 0
Views: 54
Reputation: 3269
Another way would be:
aggregate(df$Mydf, list(freq = df$Mydf), length)
# freq x
# 1 TNFM00000001497 1
# 2 TNFM00000001617 4
# 3 TNFM00000001626 4
# 4 TNFM00000001629 2
# 5 TNFM00000001630 3
tapply
can work here as well:
tapply(df$Mydf, df$Mydf, length)
Upvotes: 3
Reputation: 25528
Another possible solution:
library(tidyverse)
df %>% add_count(Mydf) %>% distinct
#> Mydf n
#> 1 TNFM00000001497 1
#> 2 TNFM00000001617 4
#> 3 TNFM00000001626 4
#> 4 TNFM00000001629 2
#> 5 TNFM00000001630 3
Upvotes: 1
Reputation: 102880
Try table
> table(df)
df
TNFM00000001497 TNFM00000001617 TNFM00000001626 TNFM00000001629 TNFM00000001630
1 4 4 2 3
or
> as.data.frame(table(df))
df Freq
1 TNFM00000001497 1
2 TNFM00000001617 4
3 TNFM00000001626 4
4 TNFM00000001629 2
5 TNFM00000001630 3
or
> stack(table(df))
values ind
1 1 TNFM00000001497
2 4 TNFM00000001617
3 4 TNFM00000001626
4 2 TNFM00000001629
5 3 TNFM00000001630
Upvotes: 2
Reputation: 52399
Use group_by
and count
:
library(dplyr)
df %>%
group_by(String = Mydf) %>%
count()
# A tibble: 5 x 2
# Groups: String [5]
String n
<chr> <int>
1 TNFM00000001497 1
2 TNFM00000001617 4
3 TNFM00000001626 4
4 TNFM00000001629 2
5 TNFM00000001630 3
Upvotes: 1