Проверьте, есть ли по крайней мере два столбца с одинаковым значением в определенном столбце

#r #dataframe #statistics

Вопрос:

у меня есть данные, и я хочу посмотреть, имеют ли все мои переменные уникальное значение в определенной строке, допустим, я хочу проанализировать строку D

мои данные

 Name F S T A 1 2 3 B 2 3 4 C 3 4 5 D 4 5 6   gt; TRUE (because all the three variables have unique value)  

Второй пример

 Name F S T A 1 2 3 B 2 3 4 C 3 4 5 D 4 5 4  gt;False (because F and T have the same value in row D )  

Ответ №1:

В base R до

 f1 lt;- function(dat, ind) {    tmp lt;- unlist(dat[ind, -1])  length(unique(tmp)) == length(tmp) }  

-тестирование

 gt; f1(df, 4) [1] TRUE gt; f1(df1, 4) [1] FALSE  

данные

 df lt;- structure(list(Name = c("A", "B", "C", "D"), F = 1:4, S = 2:5,   T = 3:6), class = "data.frame", row.names = c(NA, -4L)) df1 lt;- structure(list(Name = c("A", "B", "C", "D"), F = 1:4, S = 2:5,   T = c(3L, 4L, 5L, 4L)), class = "data.frame", row.names = c(NA,  -4L))  

Ответ №2:

Вы можете использовать dplyr для этого:

 df %gt;%  summarize_at(c(2:ncol(.)), n_distinct) %gt;%  summarize(if_all(.fns = ~ .x == nrow(df)))