выполнение операций над несколькими столбцами фрейма данных одновременно - PullRequest
0 голосов
/ 06 ноября 2019

Предположим, у меня есть список данных, и я хочу одновременно выполнить некоторые операции со столбцами 1,2 и 4 и некоторые другие операции со столбцами 3,5 и 6.

Допустим, яхочу умножить столбцы 1,2,4 на 2 и столбцы 3,5 и 6 на 3.

Используя lapply, я могу выполнить одну из этих операций одновременно, но не одновременно:

A<- apply(list, function(x) {2*X[,c(1,2,4)] 3*X[,c(3,5,6)]}) 

Это дает сообщение об ошибке как нераспознанная числовая константа. Как я могу сделать их все одновременно. Это потому, что если я сделаю один из них, я возвращаю столбцы, как 1,2,4.

Ответы [ 2 ]

1 голос
/ 06 ноября 2019

Мы можем использовать cbind для объединения обоих подмножеств после умножения на их константы.

lapply(list_df, function(df) cbind(df[c(1, 2, 4)] * 2, df[c(3, 5, 6)] * 3))

#[1]]
#  a  b  d  c  e  f
#1 2  8 20 21 15 18
#2 4 10 22 24 18 21
#3 6 12 24 27 21 24

#[[2]]
#  a  b  d  c  e  f
#1 2  8 20 21 15 18
#2 4 10 22 24 18 21
#3 6 12 24 27 21 24

данные

df <- data.frame(a = 1:3, b = 4:6, c = 7:9, d = 10:12, e = 5:7, f = 6:8)
list_df <- list(df, df)
0 голосов
/ 06 ноября 2019

Почему бы не упростить вещи и не сохранить порядок столбцов? Далее предполагается, что в кадре данных только 6 столбцов, и все они должны быть умножены.

l <- list(df,df)
lapply(l, function(x) x*c(2,2,3,2,3,3))

Выход

[[1]]
  X1 X2 X3 X4 X5 X6
   2  4  9  8 15 18

[[2]]
  X1 X2 X3 X4 X5 X6
  2  4  9  8 15 18

Данные

df <- data.frame(1,2,3,4,5,6)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...