我有一個包含三個變量的數據框:分組變量(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
哦,我正在迴應另一個用戶對我不太瞭解的東西的評論(現在已刪除)。謝謝你澄清! –