r - 在 R 中跨时间点重塑数据
问题描述
我想根据他们的访问水平查看感兴趣的变量(身高、体重和血压)。
这是原始数据集:
attempt = data.frame( ID = c(rep("S1",3),rep("S2",3)),
visit = rep(seq(1:3),2),
height = c(154,155,156,150,152,158),
weight = c(54,56,57,60,62,70),
BP = c(140,120,160,170,180,190))
原始数据
我尝试了下面的 reshape 命令,但输出看起来很奇怪。
data2 <- reshape(attempt, timevar="visit", idvar="ID", direction="wide")
重塑命令后
关于为什么我的输出没有显示的任何想法?谢谢
我想要的列标题输出是:
ID 身高.1 身高.2 身高.3 体重.1 体重.2 体重.3 BP.1 BP.2 BP.3
我希望根据他们在水平列中的访问对每个 ID 的身高、体重和 BP 进行排序。
解决方案
使用-package 中dcast()
的data.table
,这变得非常简单:
library(data.table)
#make a data.table out of 'attempt'
data.table::setDT(attempt)
#cast to desired wide format
data.table::dcast( attempt,
ID ~ visit,
value.var = c( "height", "weight", "BP" ) )
# ID height_1 height_2 height_3 weight_1 weight_2 weight_3 BP_1 BP_2 BP_3
# 1: S1 154 155 156 54 56 57 140 120 160
# 2: S2 150 152 158 60 62 70 170 180 190
推荐阅读
- reactjs - 如何通过单击 React 中的另一个组件来删除一个组件?
- excel - Excel JS API displayDialogAsync 错误 5001
- php - PHP MYSQL 语句执行不会检索 MYSQL 中特定变量的数据
- react-native - Metro bundler 之后未显示:npx react-native run-android
- r - 使用函数在数据框中创建一个带有矢量化输入的新列
- kubernetes-helm - Helm 2.16 的防火墙/端口要求
- machine-learning - 如何匹配 NLP BOW 新记录中的特征
- php - PHP $_POST 如何获取不在电子邮件中显示的预设 html 字段值
- coldfusion - 使用 ColdFusion,如何使用 listFind 复制比较语句?
- asp.net-core - ASP.NET CORE Identity UserManager CreateAsync 架构错误