在操作中使用数据框中的变量名称

时间:2017-02-20 19:19:08

标签: r dplyr

我有一些看起来像这样的数据:

dfA <- data.frame("First Var Name" = rnorm(20,3),
                  "Second Var Name" = rnorm(20,5), 
                  "Third Var Name" = rnorm(20,4),
                  "Fourth Var Name" = rnorm(20,4))

dfB <- data.frame(Grouping = c("A","B","B","A"), 
                  Varname = c("First Var Name", "Second Var Name", "Third Var Name", "Fourth Var Name"))

我想在dplyr中使用dfB进行group_by分组,将该组中变量的第一个主成分应用于dfA。我尝试过像

这样的东西
dfC <- dfB %>%
    group_by(Grouping) %>%
    relevantvars <- .$Varname %>%
    data.frame(`Grouping' = prcomp(dfA[,relevantvars])$x[,1])

然而,抓住变量名并将分组用作变量名已经证明是棘手的。我也尝试过与paste命令结合使用,但这也不起作用。这是我希望得到的:

dfC <- data.frame(A = prcomp(dfA[,c(1,4)])$x[,1], B = prcomp(dfA[,c(2,3)])$x[,1])

1 个答案:

答案 0 :(得分:0)

你实际上想要按这些变量进行分组;您想按名称对其值进行分组。如果您将dfA重新整形为长形式,然后将每个PCA的必需数据嵌套为data.frames的列表列,您可以使用purrr::map进行迭代,这样就更容易实现了。 (或者只是lapply,如果你愿意的话)。您需要为[{1}}重新整形,在这种情况下prcompunstack更简单,这对于索引非常挑剔。

tidyr::spread