[英]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.