R将列值聚合成行

R aggregating a column values into rows

我正在尝试获得有关汇总数据框的帮助。

我的示例 df 如下所示:

ID           Zoo            Last_date
ABC-DEF     DENVER          Oct_2017
ABC-DEF     DENVER          Oct_2017
ABC-DEF     DENVER          Nov_2017  
ABC-DEF     DENVER          Nov_2017  
ABC-DEF     DENVER          Nov_2017  
HG-IJK      MEMPHIS         Jan_2018
JK-LMO      MEMPHIS         Feb_2018

结果应该是

ID          ZOO          Oct_2017  Nov_2017 Jan_2019  Feb_2018
ABC-DEF    DENVER          2         3         0           0
HG-IJK      MEMPHIS        0         0         1           0
JK-LMO      MEMPHIS        0         0         0           1

我尝试使用 meltcast 函数查看 reshape2,但无法获得预期的结果。 我把数据融化成了长格式

tempMelt <- melt(temp, id.vars = 1:2, na.rm = FALSE)

并使用

投射
casttemp <- dcast(aqm, "ID" + "Zoo" ~ value)
library(reshape2) # or you could use data.table's dcast function
dcast(df, ID + Zoo ~ Last_date)

#        ID     Zoo Feb_2018 Jan_2018 Nov_2017 Oct_2017
# 1 ABC-DEF  DENVER        0        0        3        2
# 2  HG-IJK MEMPHIS        0        1        0        0
# 3  JK-LMO MEMPHIS        1        0        0        0

这给出了关于未指定值 var 或聚合函数的警告。你可以更详细一点以避免警告

dcast(df, ID + Zoo ~ Last_date, value.var = 'Last_date', length)

使用的数据

df <- data.table::fread("
ID           Zoo            Last_date
ABC-DEF     DENVER          Oct_2017
ABC-DEF     DENVER          Oct_2017
ABC-DEF     DENVER          Nov_2017  
ABC-DEF     DENVER          Nov_2017  
ABC-DEF     DENVER          Nov_2017  
HG-IJK      MEMPHIS         Jan_2018
JK-LMO      MEMPHIS         Feb_2018
")