我有一个包含三个变量的数据框:分组变量(Group)和分类变量,用于指示组是新的(新),并且其条目是拖欠的(拖欠) 。将表转换为R中的数据框列表
这里有样本数据:
df <- structure(list(Group = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 4L, 4L, 5L, 6L, 7L), .Label = c("A", "B", "C", "D", "E", "F", "G"), class = "factor"), New = c(FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, TRUE, FALSE), Delinquent = c(FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE)), .Names = c("Group", "New", "Delinquent"), class = "data.frame", row.names = c(NA, -14L))
#df
我想算拖欠组数,由它们是否是新的或没有。要做到这一点,我一个简单的数据帧上缠aggregate
table
:
yo <- table(aggregate(Delinquent ~ Group + New, data = df, FUN = max))
它产生相当奇数输出,类“表”的一个目的
yo
#, , Delinquent = 0
#
# New
#Group FALSE TRUE
# A 0 0
# B 0 0
# C 1 0
# D 0 1
# E 1 0
# F 0 1
# G 0 0
#
#, , Delinquent = 1
#
# New
#Group FALSE TRUE
# A 1 0
# B 0 1
# C 0 0
# D 0 0
# E 0 0
# F 0 0
# G 1 0
输出似乎我需要按照他们的地位来判断拖欠组的数量是否为新的数量。通常,我将表转换为数据框以直接与数据交互。但是,在这种情况下,我无法与输出的表格对象交互或将其成功转换。我试图通过as.data.frame
和as.data.frame.matrix
将其转换为数据帧,并通过as.list
和as.data.frame.list
作为列表将其转换为数据帧,但转换后的输出看起来并不正确。使用as.data.frame.array
是我能想到的最好的,但是我期待着一个两个单独的数据框的列表,每个数据框用于每个犯罪状态。有什么建议么?
as.data.frame.array(yo)
# FALSE.0 TRUE.0 FALSE.1 TRUE.1
# A 0 0 1 0
# B 0 0 0 1
# C 1 0 0 0
# D 0 1 0 0
# E 1 0 0 0
# F 0 1 0 0
# G 0 0 1 0
咦。我使用问题本身创建的'yo'获得不同的输出 - 我在那里做错了什么?我在'data.table'中不太熟悉,所以我很抱歉如果我没有正确理解输出。 –
感谢您的替代策略。至于没有像原来的帖子那样获得相同的'yo',为了澄清,'data.table'包没有涉及。它使用了来自base R的'table'。无论采用哪种方式,您的'plyr'输出都会生成我正在寻找的内容,所以非常感谢。 – coip
哦,我正在回应另一个用户对我不太了解的东西的评论(现在已删除)。谢谢你澄清! –