R 使用数据表将多个列合并为一列

R 使用数据表将多个列合并为一列,r,data.table,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

我有一个很大的数据框,它让我远离舒适的
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
我会
收集
a
s,然后相乘,最后
扩散
,但是我遇到了内存问题。如何将
muliplier
列乘以
数据中的每一行。表

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

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%>%
在(c(“a1”,“a2”),funs(.*乘数))处突变
#一个tibble:3x3
#乘法器a1 a2
#          
# 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))

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

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%>%
在(c(“a1”,“a2”),funs(.*乘数))处突变
#一个tibble:3x3
#乘法器a1 a2
#          
# 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))

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

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

data1<-data

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

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

data1<-data

你的问题是你不知道基数R。你既不需要
collect
也不需要
spread
或任何东西。也不需要data.table。您只需执行
df[-1]即可轻松实现所需的输出。也许您可以发布代码,创建一个足够大的示例,以便内存成为关注点。。。如果你真的想这样做(使用宽数据…但不是矩阵),有一个类似的问题:我想只要将
-1
切换到
乘法器即可。你的问题是你不知道基数R。你不需要
聚集
分散
或任何东西。也不需要data.table。您只需执行
df[-1]即可轻松实现所需的输出。也许您可以发布代码,创建一个足够大的示例,以便内存成为关注点。。。如果你真的想这样做(使用宽数据…但不是矩阵),有一个类似的问题:我想,只要将
-1
切换到
乘法器即可。这样就解决了我的问题,而不会出现内存问题。谢谢这解决了我的问题,没有遇到内存问题。谢谢这回答了我的
data.table
问题。那么为什么不仅仅是
df[-1]并不是所有人都理解base R.
[…]
是一个通用的订阅操作符,理解起来可能会很混乱。所以我只是想给Alex一个不同的理解接线员的方法。查看
df[-1]
的人可能不知道这意味着删除第一列。这回答了我的
data.table
问题。所以为什么不只是
df[-1]并不是所有人都理解base R.
[…]
是一个通用的订阅运算符,可能会让人难以理解。所以我只是想给Alex一个不同的理解接线员的方法。查看df[-1]
的人可能不知道这意味着删除第一列