R Проверьте, имеют ли несколько переменных с одинаковым шаблоном одинаковые значения. - PullRequest
1 голос
/ 30 апреля 2020

У меня есть некоторые переменные в моем фрейме данных, которые показывают тот же шаблон, и они также должны иметь одинаковое содержание. Теперь я хочу проверить, все ли строки показывают одинаковые значения для этих переменных. В этом примере я хочу сравнить все переменные, которые начинаются с «a» и хотят получить «True», если они действительно одинаковы. Как мне это сделать?

 df = data.frame(
  a1 = c(1,2,3), 
  nn22 = c(8,9,3), 
  a2 = c(1,2,3), 
  nn = c(8,9,3), 
  u6 = c(8,4,3), 
  o8 = c(3,9,1), 
  a3 = c(1,2,3), 
  a4 = c(1,2,3), 
  a5 = c(1,2,3), 
  a6 = c(1,2,3), 
  b= c(2,2,2))

1 Ответ

1 голос
/ 30 апреля 2020

Мы можем разделить данные на list из data.frame на основе имен префиксов, а затем использовать ==, сравнивая первый столбец со всеми другими столбцами после зацикливания list с sapply. Оберните all, чтобы проверить, есть ли у нас все ИСТИНЫ

sapply(split.default(df, sub("\\d+$", "", names(df))), function(x) all(x[,1] == x))
#    a    b   nn    o    u 
#TRUE TRUE TRUE TRUE TRUE 

Если нам нужно только сравнить столбцы 'a'

dfa <- df[startsWith(names(df), 'a')]
all(dfa == dfa[,1])
#[1] TRUE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...