繁体   English   中英

聚合两个数据框列而没有任何现有的模式逻辑

[英]Aggregating two data frame columns without any existing pattern logic

我需要通过准合并两列来汇总数据帧的值。

一方面,某些行值(更改名称)需要更改,另一方面,需要进行没有任何模式或逻辑的手动聚合。 由于这听起来可能很复杂或难以理解,请检查示例代码和图像。

数据集如下所示:

set.seed(1253)
dates <- as.Date(c(Sys.Date()+10))
fruits <- c("Apple","Apple","Apple","Apple","Banana","Banana","Banana","Banana",
  "Strawberry","Strawberry","Strawberry","Strawberry","Grape", "Grape",
  "Grape","Grape", "Kiwi","Kiwi","Kiwi","Kiwi")
parts <- c("Big Green Apple","Default","Blue Apple","XYZ Apple4",
  "Yellow Banana1","Small Banana","Banana3","Banana4",
  "Red Small Strawberry","Red StrawberryY","Big Strawberry", "StrawberryZ",
  "Green Grape", "Green Grape", "Blue Grape", "Blue Grape", 
  "Big Kiwi","Small Kiwi", "Kiwi","Default")
stock <- as.vector(sample(1:20))

theDF <- data.frame(dates, fruits, parts, stock)

theDF

在此处输入图片说明

纠正聚合的中间步骤:

在此处输入图片说明

最终的数据帧应如下所示:

在此处输入图片说明

希望有一个解决方案。 提前致谢!

set.seed(1253)
dates <- as.Date(c(Sys.Date()+10))
fruits <- c("Apple","Apple","Apple","Apple","Banana","Banana","Banana","Banana",
            "Strawberry","Strawberry","Strawberry","Strawberry","Grape", "Grape",
            "Grape","Grape", "Kiwi","Kiwi","Kiwi","Kiwi")
parts <- c("Big Green Apple","Default","Blue Apple","XYZ Apple4",
           "Yellow Banana1","Small Banana","Banana3","Banana4",
           "Red Small Strawberry","Red StrawberryY","Big Strawberry", "StrawberryZ",
           "Green Grape", "Green Grape", "Blue Grape", "Blue Grape", 
           "Big Kiwi","Small Kiwi", "Kiwi","Default")
stock <- as.vector(sample(1:20))

theDF <- data.frame(dates, fruits, parts, stock)

theDF

如果您有更多的“ parts”值,有几种方法可以做到这一点,我建议您使用一些自定义的正则表达式来提供帮助。 仅使用这样一个易于管理的数字,可以更轻松地进行以下操作。

theDF$fruits <- as.character(theDF$fruits)

theDF$fruits[theDF$fruits == "Grape" & theDF$parts == "Blue Grape"]  <- "Small Grape"
theDF$fruits[theDF$fruits == "Grape" & theDF$parts == "Green Grape"] <- "Big Grape"

df <- aggregate(theDF$stock, by = list(theDF$dates, theDF$fruits), FUN = sum)
colnames(df) <- c("dates", "fruits", "stock")

df
       dates      fruits stock
1 2016-06-11       Apple    40
2 2016-06-11      Banana    37
3 2016-06-11   Big Grape    15
4 2016-06-11        Kiwi    33
5 2016-06-11 Small Grape    21
6 2016-06-11  Strawberry    64
> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM