微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R 使用 reshape 将数据从宽传输到长

如何解决R 使用 reshape 将数据从宽传输到长

我的数据包含三个时间点的测量值。有 2 个组(安慰剂和治疗),每个组都分配了一个 ID。数据看起来像

Group      ID          Time1         Time2        Time3
1           1          33             44           77
1           2          24             123          54
1           3          32             343          434
1           4          23             23           22
2           5          14             13           24
2           6          67             14           33
2           7          55             34           35
2           6          33             12           11

所需的输出应该是:

Group     ID    Measurement
1         1     33
1         1     44
1         1     77
1         2     24
1         2     123
1         2     54

等等。

如何使用 reshape 功能转换为长格式?谢谢。

解决方法

使用 def main(args: Array[String]): Unit = { PDFNet.initialize() var doc = new PDFDoc("example.pdf") var fdf = doc.fdfExtract var iter = fdf.getFieldIterator while (iter.hasNext) { var field = iter.next var obj = field.findAttribute("T") if (obj != null && field.getName.startsWith("MyPrefix")) { obj.setName("NewPrefix") // `field.setName` produces the same error } } } 函数你可以试试这个:

reshape

这是带有 reshape(df,direction = "long",varying = c("Time1","Time2","Time3"),v.names = "Meassurement",idvar = c("Group","ID"),timevar = "Time",new.row.names= as.character(1:(nrow(df)*3))) Group ID Time Meassurement 1 1 1 1 33 2 1 2 1 24 3 1 3 1 32 4 1 4 1 23 5 2 5 1 14 6 2 6 1 67 7 2 7 1 55 8 2 8 1 33 tidyverse 方式:

pivot_longer
,

这是一个基本的 R reshape 解决方案。

vars <- grep("^Time",names(df1),value = TRUE)
Times <- as.integer(sub("[^[:digit:]]*","",vars))
df1$row.number <- seq_len(nrow(df1))

df2 <- reshape(df1,varying = list(vars),v.names = "Time",idvar = c("row.number","ID","Group"),times = Times,direction = "long")
df2$row.number <- NULL
row.names(df2) <- NULL

head(df2)
#  Group ID Time
#1     1  1   33
#2     1  2   24
#3     1  3   32
#4     1  4   23
#5     2  5   14
#6     2  6   67

数据

df1 <- read.table(text = "
Group      ID          Time1         Time2        Time3
1           1          33             44           77
1           2          24             123          54
1           3          32             343          434
1           4          23             23           22
2           5          14             13           24
2           6          67             14           33
2           7          55             34           35
2           6          33             12           11
",header = TRUE)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。