У меня есть фрейм данных R с 6 столбцами, и я хочу создать новый фрейм данных, который имеет только три столбца.
Предполагая , что мой кадр данных df
, и я хочу , чтобы извлечь колонны A
, B
и E
это единственная команда , которую я могу понять:
data.frame(df$A,df$B,df$E)
Есть ли более компактный способ сделать это?
df1 %>% select(A, B, E) %>% rowMeans(.)
. Смотрите документацию по%>%
трубе, набрав?magrittr::`%>%`
Вы можете подмножество, используя вектор имен столбцов. Я настоятельно предпочитаю этот подход по сравнению с теми, которые обрабатывают имена столбцов, как если бы они были именами объектов (например
subset()
), особенно при программировании в функциях, пакетах или приложениях.источник
object of type 'closure' is not subsettable
.df
.df
также является функцией в пакете статистики.-"A"
что это синтаксическая ошибка. И?Extract
говорит, « , также могут быть отрицательные целые числа, указывающие на элементы / ломтиков выйти из выбора.»i
j
...
> df[,c("A")]
[1] 1
. Использованиеsubset
не имеет этого недостатка.Это роль
subset()
функции:источник
c("A", "B")
это вектор, а не список.Есть два очевидных варианта: Джошуа Ульрих
df[,c("A","B","E")]
иликак в
источник
Только по какой-то причине
работал на меня. Все вышеперечисленные синтаксисы дали «неопределенные выбранные столбцы».
источник
Где df1 - ваш исходный фрейм данных:
источник
dplyr
. Он используетbase::subset
и идентичен ответу Стефана Лорана за исключением того, что вы используете номера столбцов вместо имен столбцов.Вы также можете использовать
sqldf
пакет, который выполняет выборку для фреймов данных R:Это дает в качестве вывода фрейм данных
df1
со столбцами: A, B, E.источник
Вы можете использовать
with
:источник
Кроме того, вы можете назначить другое имя для вновь создаваемых данных
источник
[
и подмножество не заменяемы:[
возвращает вектор, если выбран только один столбец.источник
drop=FALSE
. Пример:df[,c("a"),drop=F]