我在R中有下表:

S <- c("A","A","A","B","B","B","C","C","C")
TS <- c(1,1,1,2,2,2,3,3,3)
f1 <- c(10,20,30,15,25,35,17,27,37)
p <- c(100,200,300,150,250,350,170,270,370)

df <- data.frame(S, TS, f1, p)

看起来是这样的:

S TS f1 p
A 1 10 100
A 2 20 200
A 3 30 300
B 1 15 150
B 2 25 250
B 3 35 350
C 1 17 170
C 2 27 270
C 3 37 370

现在,我想转换我的数据帧,使每一行的TS(时间戳)具有唯一的值,并将变量绑定到它,如下所示:

TS SA_f1 pA SB_f1 pB SC_f1 pC
1 10 100 15 150 17 170
2 20 200 25 250 27 270
3 30 300 35 250 37 370

最优雅的方式是什么?

推荐答案

您的R代码中有一个错误,应该是

TS <- rep(1:3,3)

无论如何,一个非常优雅的解决方案

library(reshape2)

dcast(
  melt(df,id.vars=c("S","TS")),
  TS~S+variable,
  value.var="value",
  fun.aggregate=mean
)

  TS A_f1 A_p B_f1 B_p C_f1 C_p
1  1   10 100   15 150   17 170
2  2   20 200   25 250   27 270
3  3   30 300   35 350   37 370

R相关问答推荐

如何将标签移动到堆叠甜甜圈图表中每个切片的边缘?

想要创建一个可以存储四个多元正态总体的多元偏度的载体

手工PCA上的载体与输出双图不匹配

混淆矩阵,其中每列和等于1

名称输出pmap on tible

条形图和在Ploly中悬停的问题

将数字转换为分钟和秒

在数组索引上复制矩阵时出错

使用data.table::fcase()而不是dplyr::case_When()时保持值

无法正确设置动态创建的Quarto标注的格式

R中的哈密顿滤波

'使用`purrr::pwalk`从嵌套的嵌套框架中的列表列保存ggplots时出现未使用的参数错误

有没有办法一次粘贴所有列

如何删除R中除数字元素以外的所有元素

循环遍历多个变量,并将每个变量插入函数R

如何阻止围堵地理密度图?

如何在使用Alpha时让geom_curve在箭头中显示恒定透明度

自定义交互作用图的标签

在生成打印的自定义函数中,可以通过变量将线型或 colored颜色 设置为NULL吗?

R:如何在数据集中使用Apply