我试图在汇总数据框方面获得一些帮助。
我的示例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
我尝试使用reshape2
和melt
函数查看cast
,但无法达到预期的效果。
我将数据融化为长格式
tempMelt <- melt(temp, id.vars = 1:2, na.rm = FALSE)
并使用
进行投射casttemp <- dcast(aqm, "ID" + "Zoo" ~ value)
答案 0 :(得分:2)
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
")