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]
的人可能不知道这意味着删除第一列