使用两列值和缺失数据重塑数据集

Posted

技术标签:

【中文标题】使用两列值和缺失数据重塑数据集【英文标题】:Reshape dataset using two columns' values and with missing data 【发布时间】:2015-11-04 13:07:45 【问题描述】:

我想使用两列的值作为新数据集的列,将缺失数据的数据集从长到宽重塑。这是一个例子:

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

【问题讨论】:

您可以添加示例数据的 dput() 吗?你已经尝试过什么了吗?为什么它不起作用?您需要这种格式是否有特定的原因?这不是很“整洁的数据”。 试试library(dcast); dcast(df1, ID~Survey+Question, value.var='Response') 我想对于这个例子,我得到了你所展示的预期。 @akrun 感谢您之前的帮助!我仍然被困在这个问题上,而不是所有列都是数字类型,调查和问题是因素,响应是数字。 已经解决了,但是为了将来:这里是如何创建一个reproducible example in R。例如,您可以执行 dput(head(data))。 @akrun [这当然是不可证明的] 你评论的时候我已经写好了语法。 dcast-syntax 可以非常统一。被某事分心,添加格式并发布。 【参考方案1】:

或者您可以选择在投射时格式化您的数据(感谢@Pierre)

res <- dcast(ID~paste0("Survey",Survey)+paste0("Q",Question),
    value.var="Response",data=dat)

【讨论】:

【参考方案2】:

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")

【讨论】:

以上是关于使用两列值和缺失数据重塑数据集的主要内容,如果未能解决你的问题,请参考以下文章

pandas数据规整化:清理转换合并重塑之合并数据集

如何处理python scikit NMF中的缺失值

Python数据分析(八):农粮组织数据集探索性分析(EDA)

如何修复重塑我的数据集以进行交叉验证?

重塑数据集以正确大小

我应该使用训练数据集的函数来处理训练数据集和测试数据集的缺失值吗