r - R:将存储在行中的不同测量值的副本转置为单列
问题描述
如果标题具有误导性,我很抱歉,因为我不知道如何正确解释这一点(不确定术语是什么)。
我有一些数据基本上是这样的:
a<-c('AA01','AA02','AB01')
b<-c('AA','AA','AB')
c<-c('Y','N','N')
d<-c(1,2,3)
e<-c(4,5,6)
f<-c(7,8,9)
g<-c(11,22,33)
h<-c(44,55,66)
i<-c(77,88,99)
cols<-c("SampID","Characteristic1","Characteristic2","Mes1Rep1","Mes1Rep2","Mes1Rep3","Mes2Rep1","Mes2Rep2","Mes2Rep3")
df<-data.frame(a,b,c,d,e,f,g,h,i)
colnames(df)<-cols
df
SampID Characteristic1 Characteristic2 Mes1Rep1 Mes1Rep2 Mes1Rep3 Mes2Rep1 Mes2Rep2 Mes2Rep3
1 AA01 AA Y 1 4 7 11 44 77
2 AA02 AA N 2 5 8 22 55 88
3 AB01 AB N 3 6 9 33 66 99
在此示例中,Mes1Rep1 指一种测量类型的第一个重复,Mes2Rep2 指该测量的第二个重复,依此类推。我想将复制品排列在列中。更像这样的东西:
SampID Characteristic1 Characteristic2 Replicates Measurement1 Measurement2
1 AA01 AA Y Rep1 1 11
2 AA01 AA Y Rep2 4 44
3 AA01 AA Y Rep3 7 77
4 AA02 AA N Rep1 2 22
5 AA02 AA N Rep2 5 55
6 AA02 AA N Rep3 8 88
7 AB01 AB N Rep1 3 33
8 AB01 AB N Rep2 6 66
9 AB01 AB N Rep3 9 99
我将如何在 R 中执行此操作?我想我可以自己转置行,但是有什么方法可以自动复制冗余值(例如本例中的“SampID”)?
还是别无选择,只能手动执行此操作?
感谢您花时间阅读本文,并提供您的帮助和/或指导!
解决方案
我们可以使用melt
from data.table
which 可以取多个measure
patterns
library(data.table)
melt(setDT(df), measure = patterns("Mes1", "Mes2"),
variable.name = "Replicates",
value.name = c("Measurement1", "Measurement2"))[
order(SampID)][, Replicates := paste0("Rep", Replicates)][]
# SampID Characteristic1 Characteristic2 Replicates Measurement1 Measurement2
#1: AA01 AA Y Rep1 1 11
#2: AA01 AA Y Rep2 4 44
#3: AA01 AA Y Rep3 7 77
#4: AA02 AA N Rep1 2 22
#5: AA02 AA N Rep2 5 55
#6: AA02 AA N Rep3 8 88
#7: AB01 AB N Rep1 3 33
#8: AB01 AB N Rep2 6 66
#9: AB01 AB N Rep3 9 99
或使用reshape
来自base R
reshape(df, idvar = c("SampID", "Characteristic1", "Characteristic2"),
varying = list(4:6, 7:9), direction = "long")
推荐阅读
- java - 如何在没有 Rcon 访问权限的情况下检索在线玩家的 Steam ID?
- php - 服务器上的文件更改时刷新页面
- python - Python:如果公式不适用于数据框 | ValueError:DataFrame 的真值不明确
- c# - 在 Oculus Rift 中记录运动学数据
- firebase - 如何从 firebase cli 中删除 firestore
- javascript - 如何更新动画圈的实时 ajax 请求
- python - 如何将日期字符串转换为数字
- r - 合并满足条件的唯一 group_by 行并使用 tidyverse 进行汇总
- html - 引导模式:高度变化的过渡
- python - Scrapy 爬了 0 页蜘蛛