r - 当您在 R 中有超过 1 个唯一 id 时,是否有用于从宽转换为长的 R 代码?
问题描述
我有以下数据要从宽转换为长。
id_1<-c(1,2,2,2)
s02.0<-c(1,1,4,7)
s02.1<-c(2,2,5,8)
s02.2<-c(NA,3,6,NA)
id_2<-c(1,1,2,3)
df1<-data.frame(id_1,s02.0,s02.1,s02.2,id_2)
我希望基于两个唯一的 id 得到以下输出,并添加了新变量说 n,它定义了每行中 's02' 的位置
id_1<-c(1,1,1,2,2,2,2,2,2,2,2,2)
id_2<-c(1,1,1,1,1,1,2,2,2,3,3,3)
s02<-c(1,2,NA,1,2,3,4,5,6,7,8,NA)
n<-c(1,2,3,1,2,3,1,2,3,1,2,3)
df2<-data.frame(id_1,id_2,s02,n)
解决方案
我们可以用pivot_longer
library(tidyr)
library(dplyr)
df1 %>%
pivot_longer(cols = starts_with('s02'), values_to = 's02') %>%
group_by(id_1, id_2) %>%
mutate(n = row_number())
推荐阅读
- java - 字符串请求发布未显示任何错误
- node.js - How to set a Loopback nodeJS backend on Apache HTTP server running on CentOS
- c - 让 C 程序在等待 Raspberry Pi 上的 GPIO 输入时什么都不做?
- r - 将 getOOBPreds 与嵌套重采样和参数调整相结合
- visual-studio - Visual Studio does not compile into debug and release directories
- ruby - 指定要在 Capistrano 中使用的 Bundler 版本
- chaquopy - Please set python.buildPython to your Python executable path
- python - Pandas groupby and apply function to numeric columns
- vba - VBA Settings Dialog using MVP - do I need a model?
- jenkins - VCS settings for Clear Case UCM Plugin for Jenkins