Как установить подкадр данных по имени, по индексу столбца и одновременно удаляя столбцы - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть нижеприведенный фрейм данных:

product<-c("ab","ab","ab","ac","ac","ac")
shop<-c("sad","sad","sad","sadas","fghj","xzzv")
week<-c(31,31,32)
category<-c("a","a","a","b","b","b")
tempr<-c(35,35,14,24,14,5)
value<-c(0,0,-6,8,4,0)
store<-data.frame(product,shop,category,tempr,value)

, который выглядит следующим образом:

  product  shop category tempr value
      ab   sad        a    35     0
      ab   sad        a    35     0
      ab   sad        a    14    -6
      ac   sadas      b    24     8
      ac   fghj       b    14     4
      ac   xzzv       b     5     0

У меня есть вопрос, который, вероятно, неправильный, но я хочу поднастроить этот фрейм данных, выбраввторой столбец по имени, затем отбрасывает определенные столбцы (1,3,4) по номеру индекса, а затем выбирает остальные столбцы по номерам индекса, не зная предела.Что-то вроде:

store2<-store2[,input$lux2,-c(1,3),4:]

Допустим, я выбрасываю столбцы 1 и 3, оставляя столбец, давая "shop" из моего selectInput, а затем я хочу, чтобы все столбцы остались.Это будет результат:

   shop tempr value
   sad    35     0
   sad    35     0
   sad    14    -6
  adas    24     8
  fghj    14     4
  xzzv     5     0

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Я опускаю столбцы 1 и 3, оставляя столбец, давая "shop" из моего selectInput, а затем я хочу, чтобы все столбцы остались.

Как я понимаю из вашего объяснения, иваш вывод, либо вы используете selectInput, либо ничего не указываете, столбцы будут отображаться в списке.Итак, нам нужно только отбросить столбцы, в которых они вам не нужны.

#droping certain columns(1,3,4)
store[,-c(1,3)]

, и в результате получим:

  shop tempr value
   sad    35     0
   sad    35     0
   sad    14    -6
 sadas    24     8
  fghj    14     4
  xzzv     5     0
0 голосов
/ 12 сентября 2018

Вы не можете смешивать выбор по имени, отрицательный выбор и выбор по индексу col. Вы должны решить, использовать ли NAMES или INDEX-номера.

Примерно так будет работать:

colByName = "shop"
removeByInd = c(1,3)
fromNtoEnd  = 4

ind <- setdiff(
    c( match(colByName, names(store)), fromNtoEnd:ncol(store) ),
    removeByInd
)

store2 <- store[,ind]

#   shop tempr value
#1   sad    35     0
#2   sad    35     0
#3   sad    14    -6
#4 sadas    24     8
#5  fghj    14     4
#6  xzzv     5     0

Если вы планируете использовать dplyr, вы можете использовать:

store %>% select(-c(1,3),"shop",4:ncol(.))

что очень близко к вашему "воображению" в вашем вопросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...