#r
#r
Вопрос:
У меня есть этот фрейм данных MRA_DF. Я хочу передать этот фрейм данных в функцию с именем AccountMRA. Отсюда я хочу удалить столбец MRA_DF $ speed, сделать столбец MRA_DF $ price первым столбцом и сделать MRA_DF $ dist вторым столбцом. Затем я хочу вернуть это. Я не могу в этом разобраться.
Этот фрейм данных = MRA_DF
speed dist price
1 4 2 200
2 4 10 100
3 7 4 300
4 7 22 400
5 8 16 100
6 9 10 200
Идеальный результат:
price dist
1 200 2
2 100 10
3 300 4
4 400 22
5 100 16
6 200 10
Комментарии:
1. Использовать
MRA_DF[ ,c(3,2)]
2. Или используйте имена столбцов вместо индексов:
MRA_DF[c("price", "dist")]
.
Ответ №1:
Используя пакет dplyr, вы можете создать функцию, которая может принимать столбец для удаления и список имен столбцов в определенном порядке:
library(dplyr)
# create dataframe
MRA_DF = data.frame(speed = c(4, 4, 7, 7, 8, 9), dist = c(2, 10, 4, 22, 16, 10), price = c(200, 100, 300, 400, 100, 200))
# AccountMRA takes in a dataframe, column order, and a column to drop
#' @param colorder --> list of column names in specific order
#' @param todrop --> column name to drop
#' @param data1 --> dataframe to manipulate
#' @return --> return formatted dataframe
AccountMRA <- function(data1, colorder = c('price', 'dist'), todrop = 'speed'){
toreturn <- as.data.frame(data1
%>% dplyr::select(-eval(parse(text = todrop))))
return(toreturn[, colorder])
}
AccountMRA(MRA_DF, colorder = c('price', 'dist'), todrop = 'speed')
# has the following output:
# price dist
# 1 200 2
# 2 100 10
# 3 300 4
# 4 400 22
# 5 100 16
# 6 200 10
Ответ №2:
Вы можете использовать базовое подмножество R:
MRA_DF = data.frame(speed = c(4, 4, 7, 7, 8, 9), dist = c(2, 10, 4, 22, 16, 10), price = c(200, 100, 300, 400, 100, 200))
df <- MRA_DF[,c("price","dist")]
# df
# price dist
#1 200 2
#2 100 10
#3 300 4
#4 400 22
#5 100 16
#6 200 10