【发布时间】:2012-10-01 15:26:20
【问题描述】:
来自reshape2 的dcast 在没有没有重复的公式的情况下工作。以这些示例数据为例:
df <- structure(list(id = c("A", "B", "C", "A", "B", "C"), cat = c("SS",
"SS", "SS", "SV", "SV", "SV"), val = c(220L, 222L, 223L, 224L,
225L, 2206L)), .Names = c("id", "cat", "val"), class = "data.frame", row.names = c(NA,
-6L))
我想dcast 这些数据,只是将值制成表格,而不对value.var 应用任何函数,包括默认的length。
在这种情况下,它工作正常。
> dcast(df, id~cat, value.var="val")
id SS SV
1 A 220 224
2 B 222 225
3 C 223 2206
但是当有重复变量时,fun 默认为length。有办法避免吗?
df2 <- structure(list(id = c("A", "B", "C", "A", "B", "C", "C"), cat = c("SS",
"SS", "SS", "SV", "SV", "SV", "SV"), val = c(220L, 222L, 223L,
224L, 225L, 220L, 1L)), .Names = c("id", "cat", "val"), class = "data.frame", row.names = c(NA,
-7L))
> dcast(df2, id~cat, value.var="val")
Aggregation function missing: defaulting to length
id SS SV
1 A 1 1
2 B 1 1
3 C 1 2
理想情况下,我正在寻找的是添加fun = NA,因为不要尝试聚合value.var。 dcasting df2 时我想要的结果:
id SS SV
1 A 220 224
2 B 222 225
3 C 223 220
4. C NA 1
【问题讨论】:
-
出现重复时你希望它做什么?
-
只需将其添加为另一行,并带有
NA以获取任何缺失值。 -
@Dason 既然我找到了解决方案,那么回答我自己的问题是否合情合理?还是我应该删除 q?
-
绝对是犹太洁食。看到解决问题的不同方法总是很高兴。