R 中数字和字符列的 dcast - 默认返回长度
dcast for numeric and character columns in R - returning length by default
我有一个看起来像这样的数据:-
data_source zip date calories user price
compA 45768 18274 3500 abc 912.27
compB 33098 18274 3500 groups 981.28
compA 39104 18274 2500 ands 659.75
我想使用 dcast 获得宽格式的数据;早些时候它曾经工作,但现在没有。
data.table::dcast(zip + date + calories ~ data_source, value.var=c("user","price"), data=data)
如您所见,value.var
中的列具有 character
和 numeric
值,所以我不知道在 fun.aggregate
中使用什么。所以转换后的数据默认为 length
这是我不想要的。我只想要原样的值,但采用宽格式。谢谢你的帮助。
如果需要length
,我们可以在fun.aggregate
中指定length
library(data.table)
dcast(setDT(data), zip + date + calories ~ data_source,
value.var=c("user","price"), length)
根据显示的数据,没有重复项,所以它可以工作
dcast(setDT(data), zip + date + calories ~ data_source, value.var=c("user","price"))
如果有重复项,通过为分组变量添加 rowid
进行更正以具有唯一组合
dcast(setDT(data), rowid(zip, date, calories) + zip + date + calories
~ data_source, value.var=c("user","price"))
我有一个看起来像这样的数据:-
data_source zip date calories user price
compA 45768 18274 3500 abc 912.27
compB 33098 18274 3500 groups 981.28
compA 39104 18274 2500 ands 659.75
我想使用 dcast 获得宽格式的数据;早些时候它曾经工作,但现在没有。
data.table::dcast(zip + date + calories ~ data_source, value.var=c("user","price"), data=data)
如您所见,value.var
中的列具有 character
和 numeric
值,所以我不知道在 fun.aggregate
中使用什么。所以转换后的数据默认为 length
这是我不想要的。我只想要原样的值,但采用宽格式。谢谢你的帮助。
如果需要length
,我们可以在fun.aggregate
中指定length
library(data.table)
dcast(setDT(data), zip + date + calories ~ data_source,
value.var=c("user","price"), length)
根据显示的数据,没有重复项,所以它可以工作
dcast(setDT(data), zip + date + calories ~ data_source, value.var=c("user","price"))
如果有重复项,通过为分组变量添加 rowid
进行更正以具有唯一组合
dcast(setDT(data), rowid(zip, date, calories) + zip + date + calories
~ data_source, value.var=c("user","price"))