【发布时间】:2014-05-11 16:21:39
【问题描述】:
我的数据框有一个类列表变量(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
我们将不胜感激。
编辑:这是 dput 输出:
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")
【问题讨论】:
-
您能否提供
dput(head(yourdata))的输出以使其可重现? -
我有一些将列表转换为字符向量的迂回方法的想法,但我希望有一种快速的方法来分组而不更改任何内容。
-
@beginneR 给你:结构(列表(MOV = c(-69L, -68L, -67L, -63L, -62L, -60L), X = 1:6, Count = c (1L, 1L, 1L, 1L, 2L, 1L), Perc = c(0.00, 0.00, 0.00, 0.00, 0.00, 0.00), X2 = structure(list( range = "[ -69 , -35 )", range = "[ -69 , -35 )", 范围 = "[ -69 , -35 )", 范围 = "[ -69 , -35 )", 范围 = "[ -69 , -35 )", 范围 = " [ -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")