多个一列由多个其他数据表组成

时间:2018-04-18 15:49:25

标签: r data.table

我有一个大型数据框,这让我远离了我的舒适tidyverse工具。我的数据框中有一列我需要将其他列乘以。我如何使用data.table

执行此操作

例如,我有以下玩具数据:

multiplier a1  a2  
1          1   2    
2          1   2    
3          1   2   

和期望的结果

   multiplier a1  a2  
    1          1   2    
    2          2   4    
    3          3   6   

dplyr我会gather a然后相乘,然后最后spread,但我会遇到内存问题。如何将muliplier列添加到data.table

中的每一行

2 个答案:

答案 0 :(得分:1)

您可以在不传播数据的情况下执行此操作:

my_data %>% 
  mutate_at(c("a1", "a2"), funs(. * multiplier))

# A tibble: 3 x 3
#   multiplier    a1    a2
#        <int> <int> <int>
# 1          1     1     2
# 2          2     2     4
# 3          3     3     6

数据

my_data <- tibble(multiplier = 1:3, 
                  a1 = c(1L, 1L, 1L), 
                  a2 = c(2L, 2L, 2L))

答案 1 :(得分:1)

基于David Arenburg基地R可以非常快。使用上面的示例,您可以在不安装任何库的情况下获得相同的输出:

multiplier = 1:3 
a1 = c(1, 1, 1)
a2 = c(2, 2, 2)
data <- data.frame(multiplier,a1,a2)

data1<-data

选项1

data[,2:3] <- data[,2:3] * data[, 1]

选项2

data1[,2:nrow(data1)] <- data1[,2:nrow(data1)] * data1[, 1]

输出:

data
data1

  multiplier a1 a2
1          1  1  2
2          2  2  4
3          3  3  6