【发布时间】:2017-05-08 22:46:01
【问题描述】:
我有一个包含三个变量的数据框:分组变量 (Group) 和分类变量,指示组是否是新的 (New) 以及其条目是否拖欠 (Delinquent)。
以下是样本数据:
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
我正在尝试通过他们是否是新的来计算拖欠组的数量。为此,我将table 包裹在aggregate 周围的一个简单数据框上:
yo <- table(aggregate(Delinquent ~ Group + New, data = df, FUN = max))
产生相当奇怪的输出,“table”类的对象
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
【问题讨论】:
标签: r list dataframe aggregate tabular