我正在努力寻找解决以下问题的有效解决方案:
我有一个大的操纵数据框,大约有 8 列和 80000 行,通常包括多种数据类型。如果满足大型数据框的条件,我想创建一个包含一列总和的新数据框。
想象一下原始数据框的头部是这样的。$years.raw 列表示公司测量了 x 年的数据。
> cbind(company.raw,years.raw,source,amount.inkg)
company.raw years.raw source amount.inkg
[1,] "C1" "1" "Ink" "5"
[2,] "C1" "1" "Recycling" "2"
[3,] "C2" "1" "Coffee" "10"
[4,] "C2" "1" "Combusted" "15"
[5,] "C2" "2" "Printer" "14"
[6,] "C2" "2" "Tea" "18"
我现在需要做的是创建一个新的数据框,根据某些字符串元素总结每家公司和每年的 $amount.inkg 列的值。我将字符串元素保存在下面的三个向量中。字符串元素是原始数据框中 $source 列的一部分。
> vector1 <- c("Tea","Coffee")
> vector2 <- c("Ink","Printer")
> vector3 <- c("Recycling","Combusted")
首选数据框将如下所示:
Company Year amount.vector1 amount.vector 2 amount.vector 3
C1 1 0 5 2
C2 1 10 0 15
C2 2 18 14 0
$amount.vector1 的一般方法是: 汇总每个公司和每年的 $amount.inkg 列的值,其中原始数据框列 $source== vector1 的字符串元素。列 $amount.vector2 相同,只是元素当然不同。
如果没有可用的值,则应添加“0”而不是 NA 错误。这需要对整个原始数据框架进行,其中包括大约 250 家公司,每家公司的数据为 1:8(差异很大)。
编辑:对于数据框,我需要每年每公司一行。
C1 Year 1
C1 Year 2
C1 Year 3
C2 Year 1
C2 Year 2
我试图编写一个结合这些条件的函数,但我失败了。我对 R 很陌生,不知道如何链接这些条件并将它们应用于整个数据框。