let's say I have a table of the dimensions N X M, I wan to find a systematic way to rank the columns in terms of how do they increase the numbers of unique rows, preferably in R.
Asked
Active
Viewed 40 times
0
-
1Please provide a small example data and expected output based on that. – akrun Sep 16 '15 at 16:08
-
1It's good practise to provide a [reproducible example](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example/5963610#5963610) when you ask a question – Jaap Sep 16 '15 at 16:08
2 Answers
1
Try this example:
#dummy data
df <- data.frame(a = c(1, 1, 1, 1),
b = c(1, 2, 3, 4),
c = c(1, 2, 2, 4))
# a b c
# 1 1 1 1
# 2 1 2 2
# 3 1 3 2
# 4 1 4 4
#re order data.frame
df[,order(sapply(colnames(df), function(i) length(unique(df[,i]))),decreasing = TRUE)]
# b c a
# 1 1 1 1
# 2 2 2 1
# 3 3 2 1
# 4 4 4 1

zx8754
- 52,746
- 12
- 114
- 209
0
library(dplyr)
test = data_frame(a = c(1, 1, 1),
b = c(1, 2, 2),
c = c(1, 2, 3))
base = test %>% distinct
nrow(base) -
names(base) %>% sapply(function(name)
base %>%
select_("-" %>% paste(name)) %>%
distinct %>%
nrow)

bramtayl
- 4,004
- 2
- 11
- 18