【问题标题】:Nested for loop in R for combination of statesR中的嵌套for循环用于状态组合
【发布时间】:2013-06-18 05:16:33
【问题描述】:

我在 R 中有两个数据框,statedata,其中“state”是一列,topstatedata,其中“topstate”是一列。 顶级状态总数为 5,状态总数为 26。 我想运行一个嵌套循环以在我的数据中获取以下组合,以便每个 topstate 与一个状态形成一个组合。 像这样-

topstate   state
CA         AB
TX         AB
NJ         AB
FL         AB
NY         AB
CA         AE
TX         AE
NJ         AE
FL         AE
NY         AE

.....等等 请建议我为此类输出提供 R 代码。谢谢

【问题讨论】:

    标签: r loops nested


    【解决方案1】:

    您可以通过以下方式使用函数expand.grid。我编写了自己的 data.frames,因此您需要指定脚本中的任何 df1 和 df2。

    df1 <- data.frame(topstate=c("CA","TX","NJ","FL","NY"))
    df2 <- data.frame(state=c("AB","AE"))
    result <- expand.grid(topstate=unique(df1$topstate),state=unique(df2$state))
    result
    
       topstate state
    1        CA    AB
    2        TX    AB
    3        NJ    AB
    4        FL    AB
    5        NY    AB
    6        CA    AE
    7        TX    AE
    8        NJ    AE
    9        FL    AE
    10       NY    AE
    

    【讨论】:

    • 根据您的数据,您可能需要像@sebastian-c 在另一个解决方案中那样使用unique 函数。
    • 我为你感到高兴。我有一个类似的问题,我需要在上面使用expand.grid。我也很高兴知道unique 函数。
    【解决方案2】:

    您不需要循环。这样就可以了:

    setNames(data.frame(unique(topstatedata$topstate), 
                        rep(unique(statedata$state),
                            each = length(unique(topstatedata$topstate)))), 
             names(statedata)))
    

    【讨论】:

      猜你喜欢
      • 2021-09-15
      • 1970-01-01
      • 2019-08-24
      • 2021-08-09
      • 1970-01-01
      • 2023-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多