У меня есть фрейм данных с несколькими столбцами идентификаторов, содержащими только одно уникальное значение, и столбцами, которые на самом деле содержат переменные. Как их отделить?
Я придумал следующий подход, использующий условное выражение в sapply, но мне было интересно, может ли быть более элегантный способ сделать это?
Я доволен любым пакетом, и любой вывод, где кадры данных разделены, это также может быть в списке. Каждый кадр не нужно присваивать новому объекту.
mydf <- data.frame(a = 'a', b = 'b', val1 = 1:10, val2 = 10:1)
head(mydf,3)
#> a b val1 val2
#> 1 a b 1 10
#> 2 a b 2 9
#> 3 a b 3 8
id_cols <- mydf[sapply(names(mydf), function(x) {length(unique(mydf[[x]])) == 1})]
variable_cols <- mydf[sapply(names(mydf), function(x) {length(unique(mydf[[x]])) != 1})]
head(id_cols, 3)
#> a b
#> 1 a b
#> 2 a b
#> 3 a b
head(variable_cols, 3)
#> val1 val2
#> 1 1 10
#> 2 2 9
#> 3 3 8
Создан в 2020-04-02 пакетом Представить (v0.3.0)