首页 文章

使用for循环结果创建数据框

提问于
浏览
-1

我想创建一个数据框,其中df1值的平均值和df2值的平均值作为新数据框中的列 . 我可以得到要打印的值

for (i in samples) {    
print(c(with(df1, mean(d18_VSMOW[Sample == i]))))
}

但我无法将结果导入数据框4

df4=
Sample Mean1 Mean2
12adk9  #     #
12adk12 #     #
12adk20 #     #

我有与df1中显示的样本号相关的数据

df1=
Sample  d18_VSMOW
12adk9  12.27
12adk9  12.15
12adk9  11.78
12adk9  12.21
12adk9  12.52
12adk9  12.28
12adk12 10.7
12adk12 11.15
12adk12 11.24
12adk20 11.16
12adk20 11.14

和更多数据共享样本名称,但具有不同的值,如df2和不同的行数

df2 = 
Sample  d18_VSMOW
12adk9  15.27
12adk9  15.15
12adk9  17.78
12adk9  19.21
12adk9  20.52
12adk9  22.28
12adk12 16.7
12adk12 15.15
12adk12 16.24
12adk20 19.16
12adk20 19.14
12adk20 20.02
12adk20 21.02
12adk20 22.02
12adk20 23.02
12adk20 24.02

我有第三个包含所有样本名称的数据框:

samples = 
Sample
12adk9
12adk12
12adk20

1 回答

  • 1

    aggregate 函数对你的情况会更好 . 首先,按主题计算 df1 的均值,然后对 df2 执行相同的处理 . 然后可以将其结果合并在一起 .

    df1means <- aggregate(df1, by = list(Sample = df1$Sample), mean)
    df2means <- aggregate(df2, by = list(Sample = df2$Sample), mean)
    df4 <- merge(df1means, df2means, by = Sample)
    

    如果 df1 中的样本多于 df2 ,则可能需要查看 mergeall.xall.y 参数,这些参数强制 xy (在您的情况下为 df1meansdf2means )中的所有行都包含在最终结果中 .

相关问题