将具有多列的多行聚合为具有相同列的一行,并在R中连接数据
Aggregate multiple rows with multiple columns into one row with the same columns and concatenated data in R
我已经预先计算了一些均值和标准差数据来创建一个两行数据框。如何将该数据聚合到具有相同列的一行中,将数据连接成字符串,所有这些都遵循相同的格式?
这是我的数据
功能
t1
t2
t3
平均值
52
99
35
标准差
6
18
2
这是我想要的结果:
功能
t1
t2
t3
平均值(标准差)
52(6)
99(18)
35(2)
我查看了 聚合 和 应用 但不确定如何实现。
下面是生成上述代码的代码:
df <- data.frame(funct=c("Mean","sd"),
t1=c(52,6),
t2=c(99,18),
t3=c(35,2))
result <- data.frame(funct="Mean(sd)",
t1="52(6)",
t2="99(18)",
t3="35(2)")
我们可以使用sprintf
data.frame(setNames(as.list(sprintf('%s(%s)', df[1,], df[2,])), names(df)))
-输出
funct t1 t2 t3
1 Mean(sd) 52(6) 99(18) 35(2)
这个有用吗:
t(apply(df, 2, function(x) paste(x[1], '(',x[2],')', sep = ''))) %>% as.data.frame
funct t1 t2 t3
1 Mean(sd) 52( 6) 99(18) 35( 2)
我已经预先计算了一些均值和标准差数据来创建一个两行数据框。如何将该数据聚合到具有相同列的一行中,将数据连接成字符串,所有这些都遵循相同的格式?
这是我的数据
功能 | t1 | t2 | t3 |
---|---|---|---|
平均值 | 52 | 99 | 35 |
标准差 | 6 | 18 | 2 |
这是我想要的结果:
功能 | t1 | t2 | t3 |
---|---|---|---|
平均值(标准差) | 52(6) | 99(18) | 35(2) |
我查看了 聚合 和 应用 但不确定如何实现。
下面是生成上述代码的代码:
df <- data.frame(funct=c("Mean","sd"),
t1=c(52,6),
t2=c(99,18),
t3=c(35,2))
result <- data.frame(funct="Mean(sd)",
t1="52(6)",
t2="99(18)",
t3="35(2)")
我们可以使用sprintf
data.frame(setNames(as.list(sprintf('%s(%s)', df[1,], df[2,])), names(df)))
-输出
funct t1 t2 t3
1 Mean(sd) 52(6) 99(18) 35(2)
这个有用吗:
t(apply(df, 2, function(x) paste(x[1], '(',x[2],')', sep = ''))) %>% as.data.frame
funct t1 t2 t3
1 Mean(sd) 52( 6) 99(18) 35( 2)