R-根据条件向量对数据进行分组并求和
我不知道如何将数据按具有多个条件的列分组。我想有一个灵活的滑块,设置组的数量,并计算行的总和,以便在条形图中显示它们。以下是我所做的,我希望有人有一个想法: 我有一组数据如下:R-根据条件向量对数据进行分组并求和,r,break,cut,R,Break,Cut,我不知道如何将数据按具有多个条件的列分组。我想有一个灵活的滑块,设置组的数量,并计算行的总和,以便在条形图中显示它们。以下是我所做的,我希望有人有一个想法: 我有一组数据如下: print(mydata) Deviation Fuel -98893 10 -98032 20 -93958 30 -68953 40 -67829 50 等等等等等等 最后,它们将显示在条形图中。现在我想按“偏差”对数据进行分组。使用libr
print(mydata)
Deviation Fuel
-98893 10
-98032 20
-93958 30
-68953 40
-67829 50
等等等等等等
最后,它们将显示在条形图中。现在我想按“偏差”对数据进行分组。使用library(Shining),我制作了一个滑块来定义组的数量
> input
[1] 4
所以“输入”给出了mydata必须按4组分组的信息。然后我需要“偏差”的范围,以便应用这些组,然后我可以计算每个组的范围:
ABWGES <- -min(mydata$Deviation)+max(mydata$Deviation)
STEP <- round(ABWGES/input)
print(STEP)
[1] 24923
正如您所看到的,缺少一个组,因为没有任何数字符合组3的要求。所以我的条形图只有3个条,这很烦人。应该是这样的:
Deviation Fuel group
-98893 10 1
-98032 20 1
-93958 30 1
-68953 40 2
-67829 50 2
-63738 60 2
-60031 70 2
-55063 80 2
-54864 90 2
-53042 100 2
-52000 110 2
-51000 120 2
0 0 3
500 130 4
800 140 4
我想对大量数据执行此过程,那么有人知道如何执行吗?另外,我尝试使用setDT将数据分组。
我们可以使用
tidyr
中的complete
来获取缺少的组合
library(tidyverse)
df1 %>%
complete(group = full_seq(group, 1), fill = list(Deviation = 0, Fuel = 0))
# A tibble: 15 x 3
# group Deviation Fuel
# <dbl> <dbl> <dbl>
# 1 1 -98893 10
# 2 1 -98032 20
# 3 1 -93958 30
# 4 2 -68953 40
# 5 2 -67829 50
# 6 2 -63738 60
# 7 2 -60031 70
# 8 2 -55063 80
# 9 2 -54864 90
#10 2 -53042 100
#11 2 -52000 110
#12 2 -51000 120
#13 3 0 0
#14 4 500 130
#15 4 800 140
库(tidyverse)
df1%>%
完成(组=满(组,1),填充=列表(偏差=0,燃料=0))
#一个tibble:15x3
#组偏差燃料
#
# 1 1 -98893 10
# 2 1 -98032 20
# 3 1 -93958 30
# 4 2 -68953 40
# 5 2 -67829 50
# 6 2 -63738 60
# 7 2 -60031 70
# 8 2 -55063 80
# 9 2 -54864 90
#10 2 -53042 100
#11 2 -52000 110
#12 2 -51000 120
#13 3 0 0
#14 4 500 130
#15 4 800 140
数据
df1我们可以使用complete
fromtidyr
获取缺少的组合
library(tidyverse)
df1 %>%
complete(group = full_seq(group, 1), fill = list(Deviation = 0, Fuel = 0))
# A tibble: 15 x 3
# group Deviation Fuel
# <dbl> <dbl> <dbl>
# 1 1 -98893 10
# 2 1 -98032 20
# 3 1 -93958 30
# 4 2 -68953 40
# 5 2 -67829 50
# 6 2 -63738 60
# 7 2 -60031 70
# 8 2 -55063 80
# 9 2 -54864 90
#10 2 -53042 100
#11 2 -52000 110
#12 2 -51000 120
#13 3 0 0
#14 4 500 130
#15 4 800 140
库(tidyverse)
df1%>%
完成(组=满(组,1),填充=列表(偏差=0,燃料=0))
#一个tibble:15x3
#组偏差燃料
#
# 1 1 -98893 10
# 2 1 -98032 20
# 3 1 -93958 30
# 4 2 -68953 40
# 5 2 -67829 50
# 6 2 -63738 60
# 7 2 -60031 70
# 8 2 -55063 80
# 9 2 -54864 90
#10 2 -53042 100
#11 2 -52000 110
#12 2 -51000 120
#13 3 0 0
#14 4 500 130
#15 4 800 140
数据
df1@ErikSteiner请具体说明出了什么问题。谢谢,我正在和回复邮件的机修工搏斗。我过去常用Enter来表示一个新列,但stackoverflow让我发疯了。我用library(data.table)将一个组应用于所有行:setDT(mydata)[…然后分组并总结:#一个tible:3 x 3组Abweichung BW Gesamt 11-290883 60 2-526520 720 3 4 1300 270现在我想实施你的建议:#添加缺少的组mydata%>%完成(组=完整的顺序(组,1),填充=列表(Abweichung=0,BW\Gesamt=0))这将给我一条错误消息:error in use method(“full seq”):没有适用于“factor”类对象的“full seq”方法请阅读此文以获得更好的格式。我不熟悉堆栈溢出和格式设置,限制真的很烦人:非常感谢!!!:D Wuuuuuuuuu!#一个tible:4 x 3组Abweichung BW#Gesamt 1 1-290883 60 2-526520 720 3 3 0 4 1300270@ErikSteinerPle请具体说明出了什么问题。谢谢我正在与回复的后处理机制进行斗争。我以前使用Enter来表示新列,但stackoverflow让我发疯。我使用library(data.table)将一个组应用于所有行:setDT(mydata)[…然后分组并总结:#一个tible:3 x 3组Abweichung BW Gesamt 11-290883 60 2-526520 720 3 4 1300 270现在我想实施你的建议:#添加缺少的组mydata%>%完成(组=完整的顺序(组,1),填充=列表(Abweichung=0,BW\Gesamt=0))这将给我一条错误消息:error in use method(“full seq”):没有适用于“factor”类对象的“full seq”方法请阅读此文以获得更好的格式。我不熟悉堆栈溢出和格式限制,它真的很烦人:非常感谢!!!:D Wuuuuuuuuu!#一个tible:4 x 3组Abweichung BW#Gesamt 1 1-290883 60 2-526520 720 3 3 0 4 1300 270
df1 <- structure(list(Deviation = c(-98893L, -98032L, -93958L, -68953L,
-67829L, -63738L, -60031L, -55063L, -54864L, -53042L, -52000L,
-51000L, 500L, 800L), Fuel = c(10L, 20L, 30L, 40L, 50L, 60L,
70L, 80L, 90L, 100L, 110L, 120L, 130L, 140L), group = c(1L, 1L,
1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 4L)), .Names = c("Deviation",
"Fuel", "group"), class = "data.frame", row.names = c(NA, -14L
))