首页 文章

如何按R中列表中的唯一值进行分组

提问于
浏览
1

我的数据框有一个类列表变量(str输出给出: $ X2 :List of 125 ) . 我想按此列表中的唯一值进行分组以执行某些聚合函数,但是当我在dplyr中使用group_by时,我得到:

Error in eval(expr, envir, enclos) : 
  cannot group column X2, of class 'list':

A.)有没有办法按列表中的唯一值进行分组?使用dplyr还是其他一些分组功能? B.)有没有办法将列表变量转换为具有级别的因子变量?我不需要将变量X2作为列表,这就是如何生成值 . 但我确实需要能够group_by唯一值 .

我使用的数据框具有以下结构:

'data.frame':   125 obs. of  5 variables:
 $ MOV  : int  -69 -68 -67 -63 -62 -60 -59 -56 -55 -54 ...
 $ X    : int  1 2 3 4 5 6 7 8 9 10 ...
 $ Count: int  1 1 1 1 2 1 1 1 2 1 ...
 $ Perc : num  0.000179 0.000179 0.000179 0.000179 0.000358 ...
 $ X2   :List of 125

任何和所有的帮助将不胜感激 .

编辑:这是输出输出:

structure(list(MOV = c(-69L, -68L, -67L, -63L, -62L, -60L), X = 1:6, 
    Count = c(1L, 1L, 1L, 1L, 2L, 1L), Perc = c(0.000178922884236894, 
    0.000178922884236894, 0.000178922884236894, 0.000178922884236894, 
    0.000357845768473788, 0.000178922884236894), X2 = structure(list(
        range = "[ -69 , -35 )", range = "[ -69 , -35 )", range = "[ -69 , -35 )", 
        range = "[ -69 , -35 )", range = "[ -69 , -35 )", range = "[ -69 , -35 )"), .Names = c("range", 
    "range", "range", "range", "range", "range"))), .Names = c("MOV", 
"X", "Count", "Perc", "X2"), row.names = c(NA, 6L), class = "data.frame")

1 回答

  • 1

    正如您已经发现的那样,无法使用 dplyrX2 分组为列表 . 因此,您可以尝试的一种方法是转换为factor,然后按 X2 进行分组 .

    如果您的data.frame被称为 df ,请尝试以下操作:

    df$X2 <- as.factor(unlist(df$X2))
    

    之后你可以使用 dplyr 按任何变量分组,包括 X2

相关问题