使用两列的值和缺失数据重塑数据集
Reshape dataset using two columns' values and with missing data
我想使用两列的值作为新数据集的列,将缺失数据的数据集从长到宽重塑。这是一个例子:
ID Survey Question Response
1 1 1 1
1 1 2 2
1 2 1 3
1 2 2
1 2 3 4
1 3 1 3
1 3 2 4
2 1 1 2
2 1 2
2 2 1 6
2 2 2 2
2 2 3 3
2 3 1
2 3 2 5
我希望它看起来像这样
ID Survey1.Q1 Survey1.Q2 Survey2.Q1 Survey2.Q2 Survey2.Q3 Survey3.Q1 Survey3.Q1
1 1 2 3 4 3 4
2 2 6 2 3 5
或者您可以选择在投射时格式化数据(感谢@Pierre)
res <- dcast(ID~paste0("Survey",Survey)+paste0("Q",Question),
value.var="Response",data=dat)
与 reshape()
来自 {stats}
:
d <- read.table(header=TRUE, text=
'ID Survey Question Response
1 1 1 1
1 1 2 2
1 2 1 3
1 2 2 NA
1 2 3 4
1 3 1 3
1 3 2 4
2 1 1 2
2 1 2 NA
2 2 1 6
2 2 2 2
2 2 3 3
2 3 1 NA
2 3 2 5')
d$t <- 10*d$Survey+d$Question
reshape(d[,-(2:3)], dir="wide", timevar="t", idvar="ID")
我想使用两列的值作为新数据集的列,将缺失数据的数据集从长到宽重塑。这是一个例子:
ID Survey Question Response
1 1 1 1
1 1 2 2
1 2 1 3
1 2 2
1 2 3 4
1 3 1 3
1 3 2 4
2 1 1 2
2 1 2
2 2 1 6
2 2 2 2
2 2 3 3
2 3 1
2 3 2 5
我希望它看起来像这样
ID Survey1.Q1 Survey1.Q2 Survey2.Q1 Survey2.Q2 Survey2.Q3 Survey3.Q1 Survey3.Q1
1 1 2 3 4 3 4
2 2 6 2 3 5
或者您可以选择在投射时格式化数据(感谢@Pierre)
res <- dcast(ID~paste0("Survey",Survey)+paste0("Q",Question),
value.var="Response",data=dat)
与 reshape()
来自 {stats}
:
d <- read.table(header=TRUE, text=
'ID Survey Question Response
1 1 1 1
1 1 2 2
1 2 1 3
1 2 2 NA
1 2 3 4
1 3 1 3
1 3 2 4
2 1 1 2
2 1 2 NA
2 2 1 6
2 2 2 2
2 2 3 3
2 3 1 NA
2 3 2 5')
d$t <- 10*d$Survey+d$Question
reshape(d[,-(2:3)], dir="wide", timevar="t", idvar="ID")