【问题标题】:Create vectors from a contingency table [duplicate]从列联表创建向量[重复]
【发布时间】:2020-10-17 16:25:38
【问题描述】:

我有一个气象站和发生频率的列联表。我使用逻辑索引从表中创建单独的向量,如下所示 (b1:b5)。然而,必须有一个更简单的方法,也许来自 apply 系列。谁能提供这样的例子,谢谢。

mf1<-c("USW00023047","USW00013966","USC00416740","USC00413828", "USC00414982", "USC00414982", "USW00013966", "USW00013966", "USW00003927",
                    "USW00003927", "USC00412019", "USC00411596", "USW00012960", "USW00012960", "USW00012960", "USW00012960", "USW00012960", "USC00417327",
                    "USC00417327", "USC00418433", "USC00417743", "USC00419499", "USC00419847", "USR0000TCLM", "USR0000TCOL", "USW00012921", "USW00012921",
                    "USW00012970", "USW00012921", "USW00012921", "USW00012924")
table(mf1)
dfcont<-as.data.frame(table(mf1))

a<-dfcont$mf1
b1<-a[dfcont$Freq < 6]
b2<-a[dfcont$Freq == 2]
b3<-a[dfcont$Freq == 3]
b4<-a[dfcont$Freq == 4]
b5<-a[dfcont$Freq == 5]

【问题讨论】:

    标签: r vector logical-operators tapply contingency


    【解决方案1】:

    你可以使用split:

    temp <- split(as.character(dfcont$mf1), dfcont$Freq)
    

    这将为您提供temp 中的向量列表。通常,最好将数据保存在列表中,但如果您希望将它们作为单独的向量为它们分配名称并使用list2env

    names(temp) <- paste0('b', seq_along(temp))
    list2env(temp, .GlobalEnv)
    

    您现在将在您的全局环境中拥有b1b2 等。

    【讨论】:

      【解决方案2】:

      我找不到比这更简单的东西了

      tbl <- table(mf1)
      split(names(tbl), tbl)
      

      如果名称需要为 b*,请通过将 "b" 作为前缀粘贴到当前名称进行分配。

      names(sp) <- paste0('b', names(sp))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-08-08
        • 1970-01-01
        • 2021-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-09
        相关资源
        最近更新 更多