【发布时间】:2016-04-25 23:07:14
【问题描述】:
这个数据框,
df <- expand.grid(id="01", parameter=c("blood", "saliva"), visit=c("V1", "V2", "V3"))
df$value <- c(1:6)
df$sex <- rep("f", 6)
df
> df
id parameter visit value sex
1 01 blood V1 1 f
2 01 saliva V1 2 f
3 01 blood V2 3 f
4 01 saliva V2 4 f
5 01 blood V3 5 f
6 01 saliva V3 6 f
当我以“宽”格式重塑它时,我得到的结果与基本的 reshape 函数和来自 reshape2 的 dcast 函数相同。
reshape(df,
timevar="visit",
idvar=c("id", "parameter", "sex"),
direction="wide")
id parameter sex value.V1 value.V2 value.V3
1 01 blood f 1 3 5
2 01 saliva f 2 4 6
library(reshape2)
dcast(df,
id+parameter+sex~visit,
value.var="value")
id parameter sex V1 V2 V3
1 01 blood f 1 3 5
2 01 saliva f 2 4 6
但如果我添加一些缺失值,结果会有所不同
df$value <- c(1,2,NA,NA,NA,NA)
df$sex <- c(NA,NA,NA,NA,NA,NA)
df
> df
id parameter visit value sex
1 01 blood V1 1 NA
2 01 saliva V1 2 NA
3 01 blood V2 NA NA
4 01 saliva V2 NA NA
5 01 blood V3 NA NA
6 01 saliva V3 NA NA
以reshape为基数,我只得到一行
reshape(df,
timevar="visit",
idvar=c("id", "parameter", "sex"),
direction="wide")
id parameter sex value.V1 value.V2 value.V3
1 01 blood NA 1 NA NA
使用dcast,我得到两行
dcast(df,
id+parameter+sex~visit,
value.var="value")
id parameter sex V1 V2 V3
1 01 blood NA 1 NA NA
2 01 saliva NA 2 NA NA
有没有办法在 reshape 基函数中处理这些缺失值,因为我想使用这个?
【问题讨论】:
-
从帮助页面看,
reshape如何处理缺失值并不明显。 -
但是非
NA-value2去哪儿了? -
这就是重点。我想知道它的去向!
-
我不知道这是否是一个错误,但如果你将
sex中的 NA 替换为任何其他值,例如0,它会给出 2 行。 -
在代码中它使用
missing(idvar) &&.. 可能是一个错误,但至少你得到了dcast的输出,这也不是很混乱。
标签: r reshape missing-data reshape2