r - 将一个数据帧中的单元格值与另一数据帧中的相应单元格值连接起来

标签 r dataframe

我有两个包含聚合数据的数据框。第一个数据框由经历过场景 A、B 和 C 的 3 组(第 1 组、第 2 组和第 3 组)的中值组成。

我的第二个数据框由 3 组(第 1 组、第 2 组和第 3 组)的样本量组成,它们经历了场景 A、B 和 C。

数据如下所示:

median_data <- data.frame(Group = c(1, 2, 3), scenario_A = c(296.7, 152.3, 113.6), 
                      scenario_B = c(109, 76, 79), scenario_C = c(321.5, 236.5, 191))

sample_size_data <- data.frame(Group = c(1, 2, 3), scenario_A = c(113, 121, 59),
                           scenario_B = c(100, 100, 55), scenario_C = c(100, 100, 55))

我想将两个数据帧中 Scenario 列中的值转换为字符数据类型,并将第一个数据帧(中位数)的一个单元格中的值与第二个数据帧(样本大小)中的相应单元格连接起来。

我在 Stackoverflow 上搜索过;这不是 rbind/cbind 问题。我想到的所需输出是将数据框 1 中的第 1 行第 1 列与数据框 2 中的第 1 行第 1 列连接起来,依此类推。

所需的输出如下所示: Desired Output

我试过下面的代码,几乎是正确的。我不确定如何将其更改为 3 行 4 列数据框,并且结果数据框中的第 1 列(组)的样本大小不应该存在。

df <- data.frame(paste(apply(median_data, 2, as.character), " (n = ", 
                   apply(sample_size_data, 2, 
                         as.character), ")",sep = ""))

谢谢,非常感谢!

最佳答案

将计数器传递给应用语句以索引第二个数据帧

i<-1

x<-as.data.frame(apply(median_data[,-1], 2, function(x) {
  i<<-i+1
  paste0(x, " (n = ",sample_size_data[,i],")")
}))

x<-cbind(Group=median_data[,1], x)

x
  Group      scenario_A    scenario_B      scenario_C
1     1 296.7 (n = 113) 109 (n = 100) 321.5 (n = 100)
2     2 152.3 (n = 121)  76 (n = 100) 236.5 (n = 100)
3     3  113.6 (n = 59)   79 (n = 55)    191 (n = 55)

关于r - 将一个数据帧中的单元格值与另一数据帧中的相应单元格值连接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50672993/

相关文章:

仅使用模型对象重现二项式 glm

r - 在新列中连接当前行和后续行

python - Pandas groupby 和rolling 返回不同的结果

python - 如何在传递一些函数后返回 'for loop' 中的相同数据帧,而不附加等?

r - 使用 ggplot 的连续线和虚线

r - 如何汇总对应于另一列的特定值的列的组件?

r - 有没有办法删除 ggplot 之外的空白?

r - 错误 : Could not find a root 'DESCRIPTION' file that starts with '^Package'

pandas - 分解具有不同值长度的多个列表列

python - 最有效的 groupby 方式 => 聚合 pandas 中的大型数据框