逐行运行另一个数据帧的调用列数据

时间:2017-10-14 09:19:39

标签: r dplyr

这是我的第一个数据框,

df1 <- as.data.frame(matrix(rbinom(9*9, 1, 0.5), ncol=9, nrow =9))
colnames(df1) <- paste(rep(c("a","b","c"), each=3), rep(c(1,2,3), 3), sep = "")
set.seed(11)

这是我的第二个数据框,

factor.1 <- paste(rep(c("a","b"), each=3), rep(c(1,2,3), 2), sep = "")
factor.2 <- rep(paste(rep("c", 3), c(1,2,3), sep = ""), 2)
df2 <- as.data.frame(cbind(factor.1,factor.2))

我想计算每列中的结果并将其放在第二个数据帧中。我用dplyr

fun1 <- function(x){sum(ds1[, x])}
df2%>% mutate(value = fun1(factor.1))

但我得到的是这个,

  factor.1 factor.2    value
1       a1       c1       22
2       a2       c2       22
3       a3       c3       22
4       b1       c1       22
5       b2       c2       22
6       b3       c3       22

但我想要的是这个,

   factor.1 factor.2    value
  1       a1       c1       4
  2       a2       c2       4
  3       a3       c3       4
  4       b1       c1       1
  5       b2       c2       4
  6       b3       c3       5

1 个答案:

答案 0 :(得分:1)

这是你在找什么?

df2 %>% mutate(value = sapply(factor.1, fun1) )