使用dplyr将两列转换为625列
我有一个函数使用dplyr将两列转换为625列,r,dplyr,R,Dplyr,我有一个函数my_function,它接受两个任意长度的数值向量,并将它们转换为一个625维的数值向量 我有一个dataframedata,它包括三列:一个因子组、一个数值变量X和一个数值变量Y 我想按照以下思路进行操作: library(dplyr) data %>% group_by(Group) %>% summarize(my_625_new_columns=my_function(X, Y)) 结果应该是一个626列的数据帧:一个列组,然后是625列,对应于my
my_function
,它接受两个任意长度的数值向量,并将它们转换为一个625维的数值向量
我有一个dataframedata
,它包括三列:一个因子组、一个数值变量X和一个数值变量Y
我想按照以下思路进行操作:
library(dplyr)
data %>%
group_by(Group) %>%
summarize(my_625_new_columns=my_function(X, Y))
结果应该是一个626列的数据帧:一个列组,然后是625列,对应于my_函数输出中的每个元素。每组应有一行
这可以在dplyr的框架内实现吗?您可以使用
plyr
中的ddply
来实现这一点do
也可从dplyr
工作
## Some data
set.seed(0)
dat <- data.frame(Group=factor(rep(1:2, 100)), X=rnorm(100), Y=rnorm(100))
## A random function to apply to groups
## returns data.frame with same number of columns as length of x and y
func <- function(x, y) as.data.frame(t( (x+y)/2 ))
library(plyr)
res <- ddply(dat, .(Group), function(x) {
func(x$X, x$Y)
})
res
# Group V1 V2 V3 V4 V5 V6
# 1 1 1.022407 0.3569047 -0.3578722 -1.1046582 -0.2532319 0.1755368
# 2 2 -0.551505 0.6595048 -0.4816156 0.6653634 2.0414753 -0.8856480
# ...
## With `do` from dplyr
library(dplyr)
dat %>% group_by(Group) %>% do(func(.$X, .$Y))
##一些数据
种子集(0)
dat