有没有办法在没有聚合值的情况下创建子集枢轴 table?

Is there a way to create a subsetted pivot table without aggregated values?

我已经为这些问题苦苦挣扎了一段时间,但是有没有办法在 R 中解决这个问题?

Source Table 
╔═══════════╦══════╦═══════╗
║ TEST_NAME ║ SBNO ║  VAL  ║
╠═══════════╬══════╬═══════╣
║ Test1     ║    1 ║ 0.304 ║
║ Test1     ║    2 ║ 0.31  ║
║ Test1     ║    3 ║ 0.306 ║
║ Test2     ║    1 ║ 2.3   ║
║ Test2     ║    2 ║ 2.5   ║
║ Test2     ║    3 ║ 2.4   ║
║ Test3     ║    1 ║ PASS  ║
║ Test3     ║    2 ║ PASS  ║
╚═══════════╩══════╩═══════╝


Desired Output 
╔══════════════════════════╗
║ SBNO Test1 Test2   Test3 ║
╠══════════════════════════╣
║ 1    0.304  2.3    PASS  ║
║ 2    0.31   2.5    PASS  ║
║ 3    0.306  2.4    NULL  ║
╚══════════════════════════╝

*这个例子没有子集。

非常感谢, 罗德里戈几内亚

考虑到你的 data.frame 是 df,我们可以使用 spread

> library(tidyr)
> df %>% spread(TEST_NAME, VAL)
  SBNO Test1 Test2 Test3
1    1 0.304   2.3  PASS
2    2  0.31   2.5  PASS
3    3 0.306   2.4  <NA>

看起来@JilberUrbina 抢先一步,但这是一个基本相同的工作示例:

df <- data.frame(
    name = paste0("test", c(1,1,1,2,2,2,3,3)),
    sbno = rep(1:3, 3)[1:8],
    val  = c(0.304, 0.31, 0.306, 2.3, 2.5, 2.4, "pass", "pass"),
    stringsAsFactors = FALSE
)

tidyr::spread(df, key="name", value="val", convert=TRUE)