Я хочу построить функцию, которая может найти имена столбцов переменных, имеющих одинаковое значение, во всех строках, сгруппированных по каждому идентификатору.
Есть идеи, как мне это сделать?
example_data <- data.frame(ID = c(1,1,1,2,2,2,3,3,3,3), Age = c(1,2,3,1,2,3,1,2,3,4), Sex = factor(c("m","m","m", "f", "f", "f", "m","m","m","m" )))
ID Age Sex
1 1 1 m
2 1 2 m
3 1 3 m
4 2 1 f
5 2 2 f
6 2 3 f
7 3 1 m
8 3 2 m
9 3 3 m
10 3 4 m
function_that_finds_the_names(example_data)
вывод должен быть символьным векторным результатом:
[1] "ID" "Sex"
Я пробовал это
function_that_finds_the_names <- function(example_data){
list <- split(example_data, as.factor(example_data$ID), drop = TRUE)
z <- lapply(list, function(x) names(which(sapply(x, function(x) length(unique(x))) == 1)))
return(z)
}
function_that_finds_the_names(example_data)
$`1`
[1] "ID" "Sex"
$`2`
[1] "ID" "Sex"
$`3`
[1] "ID" "Sex"
возвращает список с именами для каждого идентификатора, но как извлечь изесть один вектор с одинаковыми именами в каждом элементе списка?